Mybatis Plus多表关联查询分页
时间: 2024-01-01 15:53:04 浏览: 88
Mybatis Plus多表关联查询分页可以通过使用Mybatis Plus提供的Wrapper对象和Page对象来实现。具体操作如下:
1. 创建Wrapper对象
Wrapper是Mybatis Plus提供的一个查询条件构造器,可以用来构建复杂的查询条件。在多表关联查询中,我们可以使用Wrapper来构建关联查询的条件。例如:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("status", 1)
.inSql("dept_id", "select id from dept where status=1")
.orderByDesc("create_time");
```
这段代码创建了一个Wrapper对象,它的条件是status等于1,并且dept_id在dept表中status等于1的记录中。最后按照create_time倒序排序。
2. 创建Page对象
Page对象是Mybatis Plus提供的分页对象,用于控制分页查询的页码和每页记录数。例如:
```java
Page<User> page = new Page<>(1, 10);
```
这段代码创建了一个Page对象,表示查询第一页,每页10条记录。
3. 执行查询
使用Mybatis Plus提供的IService接口的page方法进行分页查询。例如:
```java
IPage<User> userPage = userService.page(page, wrapper);
```
这段代码执行了分页查询,查询条件是wrapper,查询的分页信息是page。最终结果会被封装在IPage对象中。
完整示例代码:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("status", 1)
.inSql("dept_id", "select id from dept where status=1")
.orderByDesc("create_time");
Page<User> page = new Page<>(1, 10);
IPage<User> userPage = userService.page(page, wrapper);
List<User> userList = userPage.getRecords();
long total = userPage.getTotal();
```
这段代码执行了一个多表关联查询,查询条件是status等于1,并且dept_id在dept表中status等于1的记录中。最后按照create_time倒序排序,查询第一页,每页10条记录。查询结果被封装在IPage对象中,可以通过getRecords方法获取查询结果,通过getTotal方法获取总记录数。
阅读全文