CRUD接口
基本用法
首先,定义IUserService
,继承IService
:
public interface IUserService extends IService<User> {
// 拓展自定义方法
}
然后编写UserServiceImpl类,继承ServiceImpl,实现UserService:
然后我们就可以在controller中直接使用MyBatisPlus提供的Service方法:
对于一些复杂的业务,我们还是需要在service中自定义处理逻辑。
Lambada
IService
中还提供了Lambda
功能来简化我们的复杂查询及更新功能。我们通过两个案例来学习一下。
案例一:实现根据条件查询用户的接口
name:用户名关键字,可以为空。
status:用户状态,可以为空。
minBalance:最小余额,可以为空
maxBalance:最大余额,可以为空
@GetMapping("/list")
@ApiOperation("根据id集合查询用户")
public List<UserVO> queryUsers(UserQuery query){
// 1.组织条件
String username = query.getName();
Integer status = query.getStatus();
Integer minBalance = query.getMinBalance();
Integer maxBalance = query.getMaxBalance();
LambdaQueryWrapper<User> wrapper = new QueryWrapper<User>().lambda()
.like(username != null, User::getUsername, username)
.eq(status != null, User::getStatus, status)
.ge(minBalance != null, User::getBalance, minBalance)
.le(maxBalance != null, User::getBalance, maxBalance);
// 2.查询用户
List<User> users = userService.list(wrapper);
// 3.处理vo
return BeanUtil.copyToList(users, UserVO.class);
}
上面的实现方法略显繁琐。因此Service
对LambdaQueryWrapper和LambdaUpdateWrapper
的用法进一步做了简化,我们无需通过new
的方式创建Wrapper
,而是直接调用lambdaQuery
和lambdaUpdate
方法:
@GetMapping("/list")
@ApiOperation("根据id集合查询用户")
public List<UserVO> queryUsers(UserQuery query){
// 1.组织条件
String username = query.getName();
Integer status = query.getStatus();
Integer minBalance = query.getMinBalance();
Integer maxBalance = query.getMaxBalance();
// 2.查询用户
List<User> users = userService.lambdaQuery()
.like(username != null, User::getUsername, username)
.eq(status != null, User::getStatus, status)
.ge(minBalance != null, User::getBalance, minBalance)
.le(maxBalance != null, User::getBalance, maxBalance)
.list();
// 3.处理vo
return BeanUtil.copyToList(users, UserVO.class);
}
最后更新于
这有帮助吗?