IService中的Lamdba方法

89 阅读1分钟

当我们要进行一个复杂查询的时候我们会使用xml实现动态SQL语句,或者构造条件构造器然后在通过IService中的list方法进行查询,但是这两种方法都还是比较麻烦。我们可以直接调用IService中的lambdaQuery() 方法记进行查询。

lamdbaQuery()使用示例

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

需要注意的是lamdbaQuery()方法中除了可以构造条件,还需要在链式编程的最后添加一个list,这是在告诉MP我们的调用结果需要的是一个list集合。这里不仅可以用list(),可选的方法有: .one():最多返回一个结果,.list():返回集合结果.count():返回计数结果 MyBatis会根据链式编程的最后一个方法来判断最终的返回结果。