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);
}

上面的实现方法略显繁琐。因此ServiceLambdaQueryWrapper和LambdaUpdateWrapper的用法进一步做了简化,我们无需通过new的方式创建Wrapper,而是直接调用lambdaQuerylambdaUpdate方法:

@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);
}

最后更新于

这有帮助吗?