lambdaquerywrapper连表分页联查
时间: 2023-08-26 14:06:59 浏览: 1005
mybatis-plus-join:支持连表查询的mybatis-plus,mybatis-plus风格的连表操作提供wrapper.leftJoin(),wrapper.rightJoin()等操作
LambdaQueryWrapper 是 MyBatis-Plus 提供的一个强大的查询构造器,可以帮助我们快速构建复杂的 SQL 查询语句。在使用 LambdaQueryWrapper 进行分页联查时,我们可以通过 join 方法完成多表联查,通过 select 方法指定需要查询的字段,通过 orderBy 方法指定排序规则,然后使用 Page 对象进行分页。下面给出一个示例:
```java
// 创建 LambdaQueryWrapper 对象
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.select(User.class, User::getId, User::getUsername, Order::getProductName)
.eq(User::getIsDeleted, false)
.eq(Order::getIsDeleted, false)
.eq(User::getId, userId)
.orderByDesc(Order::getCreateTime)
.last("limit " + (pageIndex - 1) * pageSize + "," + pageSize);
// 联表查询
wrapper.innerJoin(Order.class, Order::getUserId, User::getId);
// 执行查询
List<UserOrderVO> userOrderList = userMapper.selectUserOrderList(wrapper);
// 构造分页对象
Page<UserOrderVO> page = new Page<>(pageIndex, pageSize);
page.setRecords(userOrderList);
long total = userMapper.selectCount(wrapper);
page.setTotal(total);
return page;
```
在上述示例中,我们查询了 User 表和 Order 表的数据,并且指定了需要查询的字段。然后使用 innerJoin 方法完成了两个表的联查,并且使用 last 方法指定了分页的 SQL 语句。最后,我们通过 Page 对象构造分页结果,并返回给调用方。
阅读全文