spring boot mybatis plus 分页查询 并且返回总数
时间: 2024-09-20 21:17:35 浏览: 72
在Spring Boot中使用MyBatis Plus进行分页查询时,通常会涉及到`Page`对象,这是一个封装了数据和分页信息的容器。如果你想同时获取总数,可以在查询的时候加上统计条件,然后在服务层处理这个统计结果。
以下是基本步骤:
1. 首先,在Mapper接口中编写一个带统计参数的通用查询方法:
```java
List<T> list(@Param("params") Map<String, Object> params, Integer pageNum, Integer pageSize);
```
这里的`params`参数包含了实际的查询条件,`pageNum`和`pageSize`分别代表当前页码和每页的数量。
2. 然后,在Service层调用Mapper方法,并传递额外的参数来获取总数:
```java
Map<String, Object> queryParams = new HashMap<>();
queryParams.put("your_conditions", ...); // 查询条件
Integer totalCount = yourMapper.getTotalCount(queryParams); // 这里调用的是自定义的统计方法
Page<T> page = yourMapper.list(queryParams, pageRequest.getPage(), pageRequest.getPageSize());
// 返回包含数据列表和总记录数的对象,如Page<T>
return new Page<>(page.getCurrent(), page.getSize(), totalCount, page.getRecords());
```
其中,`getTotalCount`方法通常是一个静态方法,它会执行一个无数据的分页查询,只计算满足条件的总记录数。
3. 最后,在Controller层返回结果:
```java
@GetMapping("/list")
public ResultVo<List<T>, Integer> getPageData(@RequestBody PageRequest pageRequest) {
ResultVo<List<T>, Integer> result = service.getPageData(pageRequest);
return result;
}
```
阅读全文