簡介
說明
本文用示例介紹Mybatis-Plus的LambdaQueryWrapper的用法。
這種用法是使用Mybatis-Plus進行查詢最好用的方法,用過一次後就會直接抛棄其他寫法。
LambdaQueryWrapper的好處
- 寫法最簡潔,最短
- 寫起來最快
- 很友善對齊,可讀性好
- 不需要Mapper
- 不需要手動找到對應的字段名,直接用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);
}