LambdaQueryWrapper 多表关联,left join right join,请用java代码举例一下
时间: 2023-07-06 13:37:52 浏览: 283
好的,以下是使用LambdaQueryWrapper进行多表关联查询的Java代码示例:
假设我们有两张表,一张是user表,一张是order表。user表中有id、name、age等字段,order表中有id、user_id、order_no、order_time等字段。现在我们需要查询user表和order表中,user表中age大于18岁的所有用户的订单信息,包括那些没有订单的用户。
左连接查询:
```java
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.gt(User::getAge, 18);
List<UserOrderDTO> userOrderDTOList = userMapper.selectUserOrderList(queryWrapper);
```
我们定义了一个UserOrderDTO实体类,用来封装用户信息和订单信息:
```java
@Data
public class UserOrderDTO {
private Long id;
private String name;
private Integer age;
private Long orderId;
private String orderNo;
private Date orderTime;
}
```
然后,在UserMapper中定义了selectUserOrderList方法:
```java
List<UserOrderDTO> selectUserOrderList(@Param(Constants.WRAPPER) Wrapper<User> wrapper);
```
接着,我们可以使用LambdaQueryWrapper进行左连接查询:
```java
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.leftJoin(Order.class, Order::getUserId, User::getId)
.gt(User::getAge, 18);
List<UserOrderDTO> userOrderDTOList = userMapper.selectUserOrderList(queryWrapper);
```
在这个例子中,我们使用了LambdaQueryWrapper的leftJoin方法,将user表和order表进行了左连接。leftJoin方法的第一个参数是要连接的表的实体类,第二个参数是连接条件,这里我们连接的条件是order表中的userId字段等于user表中的id字段。然后,我们使用gt方法添加了一个查询条件,查询了所有年龄大于18岁的用户的信息以及他们的订单信息。
右连接查询:
```java
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.rightJoin(Order.class, Order::getUserId, User::getId)
.gt(User::getAge, 18);
List<UserOrderDTO> userOrderDTOList = userMapper.selectUserOrderList(queryWrapper);
```
与左连接查询类似,我们只需要使用rightJoin方法进行右连接即可。
阅读全文