LambdaQueryWrapper 复杂用法
时间: 2023-11-08 19:04:56 浏览: 71
LambdaQueryWrapper 是 MyBatis-Plus 提供的一个查询构造器,可以方便地进行复杂的查询操作。下面是 LambdaQueryWrapper 的一些复杂用法:
1. 多条件查询
可以使用 LambdaQueryWrapper 的链式调用方式,通过 and() 或 or() 方法连接多个查询条件,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "张三").or().eq(User::getName, "李四");
List<User> userList = userMapper.selectList(wrapper);
```
上述代码中,使用了 eq() 方法表示等于某个值,or() 方法表示或者,最终查询出 name 为 "张三" 或 "李四" 的用户列表。
2. 子查询
可以使用 nested() 方法进行子查询,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.nested(i -> i.eq(User::getName, "张三").or().eq(User::getName, "李四"));
List<User> userList = userMapper.selectList(wrapper);
```
上述代码中,使用了 nested() 方法表示嵌套查询,最终查询出 name 为 "张三" 或 "李四" 的用户列表。
3. 分组查询
可以使用 groupBy() 方法进行分组查询,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.select(User::getAge, "count(*) as count").groupBy(User::getAge);
List<Map<String, Object>> userList = userMapper.selectMaps(wrapper);
```
上述代码中,使用了 select() 方法选择需要查询的字段,groupBy() 方法进行分组,最终查询出按照年龄分组的用户数量。