天天看點

Mybatis-Plus--LambdaQueryWrapper--使用/執行個體

簡介

說明

        本文用示例介紹Mybatis-Plus的LambdaQueryWrapper的用法。

        這種用法是使用Mybatis-Plus進行查詢最好用的方法,用過一次後就會直接抛棄其他寫法。

LambdaQueryWrapper的好處

  1. 寫法最簡潔,最短
  2. 寫起來最快
  3. 很友善對齊,可讀性好
  4. 不需要Mapper
  5. 不需要手動找到對應的字段名,直接用User::xxx即可。

寫法1:Service + 條件 (推薦)

需求1:多個條件查詢(名字中帶“張”且年齡小于30歲)

@Autowired
private UserService userService;

public void selectWrapper15() {
    List<User> users = userService.lambdaQuery()
        .like(User::getName, "張")
        .lt(User::getAge, 30)
        .list();
    
    users.forEach(System.out::println);
}      

需求2:王姓并且(年齡小于40或郵箱不為空)

@Autowired
private UserService userService;

public void selectWrapper16() {
    List<User> users = userService.lambdaQuery()
        .like(User::getName, "張")
        .and(user -> user.lt(User::getAge, 40).or().isNotNull(User::getEmail))
        .list();

    users.forEach(System.out::println);
}      

寫法2:Mapper + 條件(不推薦)

@Autowired
private UserMapper userMapper;

public void selectWrapper15() {
    // 方式1(推薦使用,因為此方法是靜态的)
    LambdaQueryWrapper<User> queryWrapper = Wrappers.<User>lambdaQuery();

    // 方式2
    // LambdaQueryWrapper<User> queryWrapper = new QueryWrapper<User>().lambda();

    // 方式3
    // LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();

    queryWrapper.like(User::getName, "張").lt(User::getAge, 30);
    List<User> users = userMapper.selectList(queryWrapper);
    users.forEach(System.out::println);
}