LambdaQueryWrapper实现多表关联查询
时间: 2023-10-30 16:01:35 浏览: 1015
LambdaQueryWrapper是MyBatis-Plus中的一个查询构造器,用于构建复杂的查询条件。它可以实现多表关联查询,通过使用其提供的方法来添加关联条件。
要实现多表关联查询,可以按照以下步骤进行操作:
1. 创建LambdaQueryWrapper对象:使用Wrappers类的lambdaQuery方法创建一个LambdaQueryWrapper对象。
2. 添加主表查询条件:使用LambdaQueryWrapper的方法,如eq、like、between等,来添加主表的查询条件。
3. 添加关联表查询条件:使用LambdaQueryWrapper的方法,如eq、like、between等,来添加关联表的查询条件。
4. 添加关联关系:使用LambdaQueryWrapper的方法,如leftJoin、innerJoin、rightJoin等,来指定关联关系。
5. 执行查询:使用baseMapper的selectList方法执行查询,并传入LambdaQueryWrapper对象。
下面是一个示例代码,演示了如何使用LambdaQueryWrapper实现多表关联查询:
```java
public List<User> userList() {
LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery();
wrapper.like(User::getName, "张");
LambdaQueryWrapper<Order> orderWrapper = Wrappers.lambdaQuery();
orderWrapper.like(Order::getOrderNo, "2020");
wrapper.inSql(User::getId, "SELECT user_id FROM order WHERE order_no LIKE '2020%'");
wrapper.apply("user.id = order.user_id");
return this.baseMapper.selectList(wrapper);
}
```
在上述示例中,我们创建了两个LambdaQueryWrapper对象,分别用于User表和Order表的查询条件。
然后,我们使用like方法添加了User表的查询条件,使用like方法添加了Order表的查询条件。接着,我们使用inSql方法添加了一个子查询条件。
最后,我们使用apply方法添加了关联条件,指定了User表和Order表之间的关联关系。
通过执行selectList方法,我们可以获取到满足条件的User列表。
希望以上信息能够帮助到您。如果您还有任何疑问,请随时提问。
阅读全文