mybatisplus 自定义分页查询
时间: 2023-08-23 09:05:45 浏览: 121
mybatisplus 提供了非常方便的分页查询功能,但是如果需要自定义一些查询条件,可以使用自定义SQL语句的方式进行分页查询。下面是一个示例代码:
```java
Page<User> page = new Page<>(1, 10); // 第 1 页,每页 10 条记录
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("status", 1); // 查询条件,假设要查询状态为 1 的用户
List<User> userList = userMapper.selectPage(page, wrapper).getRecords(); // 查询结果
page.setRecords(userList); // 将查询结果设置到分页对象中
return page;
```
在上面的代码中,使用了 `QueryWrapper` 对象设置查询条件,然后调用 `selectPage` 方法进行分页查询,最后通过 `page.setRecords` 方法将查询结果设置到分页对象中。需要注意的是,`getRecords` 方法返回的是查询结果列表,而不是分页对象本身,所以需要手动设置到分页对象中。
如果需要自定义 SQL,可以使用 `selectPage` 方法的第一个参数 `IPage` 对象的 `setSqlSelect` 方法设置自定义 SQL 语句。例如:
```java
Page<User> page = new Page<>(1, 10); // 第 1 页,每页 10 条记录
String sql = "select * from user where status = 1 limit " + page.getOffset() + ", " + page.getSize();
page.setSqlSelect(sql); // 设置自定义 SQL 语句
List<User> userList = userMapper.selectPage(page, null).getRecords(); // 查询结果
page.setRecords(userList); // 将查询结果设置到分页对象中
return page;
```
在上面的代码中,使用了 `page.getOffset` 和 `page.getSize` 方法计算出分页查询的起始位置和记录数,然后拼接成自定义 SQL 语句,再使用 `page.setSqlSelect` 方法设置到分页对象中。需要注意的是,由于没有使用 `QueryWrapper` 对象设置查询条件,第二个参数传入了 `null`。
阅读全文