1 引入依赖
#本次测试用的springboot版本为2.1.5.RELEASE,其他版本自测
#
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
2 写代码
public PageInfo findItemByPage(Map<String,Object> queryMap,int currentPage,int pageSize) {
//设置分页信息,分别是当前页数和每页显示的总记录数【记住:必须在mapper接口中的查询方法执行之前设置该分页信息】
PageHelper.startPage(currentPage, pageSize);
//mapper接口中的查询方法执行
List<Item> itemsList = itemMapper.findItem(queryMap);
//PageInfo 是 pagehelper中内值的分页的信息类
PageInfo<Item> info=new PageInfo<>(itemsList);
// 返回值是 PageInfo
return info;
}
还可以这样用lambda表达式写法
PageInfo<RecruitOrgDO> pageInfo = PageHelper
.startPage(request.getPageNum(), request.getPageSize())
.doSelectPageInfo(() -> recruitOrgService.selectLikeName(request.getName()));
3 返回值
#在2中的返回值结构 PageInfo<Employee> info=new PageInfo<>(itemsList);
{
"navigatepageNums":Array[8], //所有导航页号
"startRow":1, //当前页面第一个元素在数据库中的行号
"endRow":3, //当前页面最后一个元素在数据库中的行号
"hasNextPage":true, //是否有下一页
"prePage":0, //前一页
"nextPage":2, //
"pageSize":3, //每页的数量
"list":Array[3], //结果集(每页显示的数据)
"pageNum":1, //当前页
"navigatePages":8, //导航页码数
"navigateFirstPage":1, //
"total":65, //总记录数
"pages":22, //总页数
"size":3, //当前页的数量
"isLastPage":false, //是否为最后一页
"hasPreviousPage":false, //是否有前一页
"navigateLastPage":8, //
"isFirstPage":true //是否第一页
}
4遇到的坑
- 结果集,不分页的问题:很有可能startPage下有两个查询结果集,如下代码;
public PageInfo findItemByPage(Map<String,Object> queryMap,int currentPage,int pageSize) {
//设置分页信息,分别是当前页数和每页显示的总记录数
//【记住:必须在mapper接口中的查询方法执行之前设置该分页信息】
//只对其后的第一个查询有效
PageHelper.startPage(currentPage, pageSize);
List<Item> itemsList = itemMapper.findItem(queryMap); // 执行分页查询
List<Item> itemsList2 = itemMapper.findItem(queryMap); // 不会执行分页查询(即使把itemsList2 加入PageInfo 中也不会出现分页情况)
PageInfo<Item> info=new PageInfo<>(itemsList);
return info;
}