PageHelper分页插件及PageInfo介绍及使用
转载链接
1. MyBatis分页插件-PageHelper的配置
<!-- pagehelper :分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
<!-- pagehelper的依赖包:jsqlparser -->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>0.9.5</version>
</dependency>
2.配置拦截器插件:
- mybatis-config.xml全局配置文件中
<!--
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?,
typeAliases?, typeHandlers?,
objectFactory?,objectWrapperFactory?,
plugins?,
environments?, databaseIdProvider?, mappers?
-->
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
</plugin>
</plugins>
3.PageInfo属性表
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage;
//是否为最后一页
private boolean isLastPage;
//是否有前一页
private boolean hasPreviousPage;
//是否有下一页
private boolean hasNextPage;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
public PageInfo() {
this.isFirstPage = false;
this.isLastPage = false;
this.hasPreviousPage = false;
this.hasNextPage = false;
}
4.逻辑分页
- 有时候分页逻辑完全在controller层写,service完全返回集合数据而已。
// service层
public PageInfo<T> methodName(int pageNum, int pageSize) {
//1 设置分页
PageHelper.startPage(pageNum, pageSize);
//2 查询
List<T> list =TMapper.mapperMethod();
//3 返回
return new PageInfo<>(list);
}
// controller层
public @ResponseBody DataGridResultInfo methodName (Vo vo){
//1 查询
PageInfo<T> pageInfo = service. methodName (vo.getPage(), vo.getRows());
//2 封装
return new DataGridBean(pageInfo.getTotal() , pageInfo.getList() );
}