简介
说明
本文用示例介绍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);
}