LambdaQueryWrapper怎么连接查询
时间: 2023-10-12 11:17:23 浏览: 91
LambdaQueryWrapper是MyBatis-Plus中提供的一个Lambda表达式查询构造器,它可以用来构造复杂的SQL查询语句,包括连接查询。
连接查询可以通过wrapper对象的join方法来完成,它有多个重载方法,可以用来指定连接类型、连接表名以及连接条件等,例如:
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 18)
.join(UserRole.class, UserRole::getUserId, User::getId)
.eq(UserRole::getRoleId, 2);
List<User> userList = userService.list(wrapper);
```
这段代码中,我们先创建了一个LambdaQueryWrapper对象,然后使用eq方法指定查询条件,最后使用join方法进行连接查询,其中第一个参数指定了要连接的表名,第二个参数指定了连接条件,最后调用list方法执行查询。
相关问题
LambdaQueryWrapper级联查询
LambdaQueryWrapper可以通过lambda表达式进行级联查询,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getUsername, "张三")
.nested(i -> i.eq(User::getAge, 18).or().eq(User::getAge, 20));
List<User> userList = userMapper.selectList(wrapper);
```
以上代码中,我们使用LambdaQueryWrapper进行了一个级联查询,查询条件为用户名为“张三”且年龄为18或20的用户列表。其中,`.nested()`方法用于嵌套查询条件,`.or()`方法用于连接多个查询条件,表示或的关系。
另外,LambdaQueryWrapper还支持多表关联查询,例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getUsername, "张三")
.inSql(User::getId, "select user_id from user_role where role_id = 1");
List<User> userList = userMapper.selectList(wrapper);
```
以上代码中,我们使用LambdaQueryWrapper进行了一个多表关联查询,查询条件为用户名为“张三”且角色为1的用户列表。其中,`.inSql()`方法用于查询子查询结果中包含某个字段值的记录。
LambdaQueryWrapper 关联查询
LambdaQueryWrapper 是 MyBatis-Plus 框架提供的一个查询条件构造器,用于构建复杂的查询条件。关联查询可以通过 LambdaQueryWrapper 的方法链来实现。
首先,需要在查询实体类中定义关联对象的字段。例如,如果有一个订单表和一个用户表,订单表中有一个关联用户的字段 userId,可以在订单实体类中定义一个 User 对象:
```java
public class Order {
private Integer id;
private Integer userId;
private String orderNo;
private User user;
// 省略 getter 和 setter 方法
}
```
然后,在查询时使用 LambdaQueryWrapper 的方法链进行关联查询。以查询订单及关联用户为例:
```java
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Order::getId, 1)
.leftJoin(User.class, Order::getUserId, User::getId, Order::setUser);
Order order = orderMapper.selectOne(queryWrapper);
```
上述代码中,eq 方法用于设置订单的 id 条件,leftJoin 方法用于进行左连接查询,并通过 set 方法将关联的用户对象设置到订单对象中。最后通过 selectOne 方法执行查询。
这样就实现了使用 LambdaQueryWrapper 进行关联查询的功能。根据具体业务需求,可以使用其他的查询条件方法来构建更复杂的关联查询条件。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)