最新的项目用到了pagehelper分页插件,在此做下笔记方便以后查看!同时也希望能对别人产生帮助。
1.因为项目是maven进行管理的,所以:第一步就是在pom.xml文件中引入pagehelper分页插件。
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
2.项目运行成功 ,调用数据库数据前加一句代码即可实现分页 :PageHelper.startPage(pageNum, pageSize)
分页成功后,实际返回的结果list类型是Page<E>,如果想取出分页信息,有两种方法:
需要强制转换为Page<E>,或者使用PageInfo类(下面的例子有介绍)
方法一:强转
serviceImpl层
controller层
Page<E>:需要详细了解可以查下每个属性的含义。
方法二:使用PageInfo类
public PageInfo<Doc> selectDocByPage1(int currentPage, int pageSize) {
PageHelper.startPage(currentPage, pageSize);
List<Doc> docs = docMapper.selectByPageAndSelections();
PageInfo<Doc> pageInfo = new PageInfo<>(docs);
return pageInfo;
}
pageInfo:需要详细了解可以查下每个属性的含义。
/**
* 页码,从1开始
*/
private int pageNum;
/**
* 页面大小
*/
private int pageSize;
/**
* 起始行
*/
private int startRow;
/**
* 末行
*/
private int endRow;
/**
* 总数
*/
private long total;
/**
* 总页数
*/
private int pages;
/**
* 包含count查询
*/
private boolean count = true;
/**
* count信号,3种情况,null的时候执行默认BoundSql,true的时候执行count,false执行分页
*/
private Boolean countSignal;
/**
* 排序
*/
private String orderBy;
/**
* 只增加排序
*/
private boolean orderByOnly;
/**
* 分页合理化
*/
private Boolean reasonable;
/**
* 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
*/
private Boolean pageSizeZero;
注意:PageHelper只对紧跟着的第一个SQL语句起作用
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
//紧跟着的第一个select方法会被分页
List<Country> list = countryMapper.selectIf(1);
//后面的不会被分页,除非再次调用PageHelper.startPage
List<Country> list2 = countryMapper.selectIf(null);
//list1
assertEquals(2, list.get(0).getId());
assertEquals(10, list.size());
//分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>,
//或者使用PageInfo类(下面的例子有介绍)
assertEquals(182, ((Page) list).getTotal());
//list2
assertEquals(1, list2.get(0).getId());
assertEquals(182, list2.size());
如果想知道为什么会这样可以搜搜pageHelper实现分页的原理。