MyBatis-Plus只查询固定条数记录
在使用MyBatis-Plus时有时候会碰到根据时间排序,只取最早或最晚一条记录的需求,这种需求其实只需在查询构造器最后加一个last()方法即可,方法里传入参数last(“limit 1”)。
这种方法可以实现上述需求,但是不得不写一个"limit 1",以后改需求查两个的话又需要改为"limit 2",而且这里写一个常量字符串感觉也怪怪的,基于此可以用两种方法代替。
方法一
使用常量代替,例如在代码中可以这样写
last(Constant.LIMIT_ONE)
方法二
自己建一个mybatis-plus查询构造器,继承LambdaQueryWrapper,实现代码如下:
@Component
public class StrengthenLambdaQueryWrapper<T> extends LambdaQueryWrapper<T> {
/**
* 只取一条记录
* @param lambdaQueryWrapper
* @return LambdaQueryWrapper
*/
public LambdaQueryWrapper<T> limitOne(LambdaQueryWrapper<T> lambdaQueryWrapper){
return lambdaQueryWrapper.last(Constant.LIMIT_ONE);
}
}
在业务方法中使用
public void testLimitOne(String userName){
StrengthenLambdaQueryWrapper<SysBizUser> sysBizUserStrengthenLambdaQueryWrapper = new StrengthenLambdaQueryWrapper<>();
LambdaQueryWrapper<SysBizUser> lambdaQueryWrapper = sysBizUserStrengthenLambdaQueryWrapper
.limitOne(sysBizUserStrengthenLambdaQueryWrapper)
.eq(SysBizUser::getUserName, userName);
SysBizUser sysBizUser = sysBizUserMapper.selectOne(lambdaQueryWrapper);
}