详细介绍LambdaJoinQueryWrapper
时间: 2023-10-21 09:07:31 浏览: 91
LambdaJoinQueryWrapper是MyBatis-Plus提供的一种查询构造器,用于实现多表关联查询,可以通过Lambda表达式来进行条件构造,支持LEFT JOIN、RIGHT JOIN、INNER JOIN等多种关联方式。
LambdaJoinQueryWrapper提供了join()方法来实现多表关联查询,可以通过传入Lambda表达式来构造关联条件。同时,LambdaJoinQueryWrapper还提供了select()、groupBy()、having()、orderBy()等方法来进行查询结果的筛选、分组、排序等操作。
使用LambdaJoinQueryWrapper的步骤如下:
1. 创建LambdaJoinQueryWrapper对象,指定主表实体类和表别名。
```
LambdaJoinQueryWrapper<User> wrapper = new LambdaJoinQueryWrapper<>(User.class, "u");
```
2. 通过join()方法添加关联表和关联条件。
```
wrapper.join(UserRole.class, ur -> ur.eq(UserRole::getUserId, User::getId));
```
3. 使用select()、groupBy()、having()、orderBy()等方法进行查询结果的筛选、分组、排序等操作。
```
wrapper.select(User::getId, User::getUsername, avg(UserRole::getRoleId).as("roleAvg"))
.groupBy(User::getId, User::getUsername)
.having(avg(UserRole::getRoleId).gt(1))
.orderByDesc(User::getId);
```
4. 最后使用MyBatis-Plus提供的selectList()、selectPage()、selectMaps()等方法进行查询操作。
```
List<User> userList = userMapper.selectList(wrapper);
Page<User> userPage = userMapper.selectPage(new Page<>(1, 10), wrapper);
List<Map<String, Object>> userMapList = userMapper.selectMaps(wrapper);
```
LambdaJoinQueryWrapper可以大大简化多表关联查询的操作,减少手写SQL的工作量,提高代码的可读性和可维护性。
阅读全文