pagehelper是一个简单的实现分页技巧的插件,利用PageHelper可以很方便地对数据库查询结果进行分页。
pagehelper的使用准备
我们要使用这个插件无可避免的需要引用它的jar包,你可以从下面的地址中下载最新版本的 jar 包
1:https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/
2:http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
如果项目使用了maven,可以通过pomxml配置依赖
com.github.pagehelper
pagehelper
5.0.0
pagehelper的版本问题频发,依赖或jar包导入后,启动项目以检查是否出现版本问题。
这里我使用的是4.1.4maven版本
一、首先,在
xml
中这样配置:
dialect=mysql
reasonable=true
supportMethodsArguments=true
params=count=countSql
autoRuntimeDialect=true
rowBoundsWithCount=true
二、模拟一个查询,用了PageHelper之后,查询语句我们简化一下。
这方法的配置是通过Mybatis generatorConfig 方法生成的xml配置稍加修改的成品。
三、Mapper、Services我就不帖代码了,直接调用即可,不需要传分页参数。下面是Controller:
@RequestMapping(value = "/selectUser",method = RequestMethod.POST)
public @ResponseBody Response
在这里可以看到使用了三个参数,调用非常简单,只要在查询前调用一次即可注入到sql语句中。
PageHelper.startPage(page, pageSize,"create_date desc");
这段代码表示,程序开始分页了,page默认值是1,pageSize默认是5,意思是从第1页开始,每页显示5条记录,并且按照创建时间倒序。
调用后,sql发生了如下改变
/**注入前**/
select id, user_name, real_name, portrait, gender, create_time from sys_user
/**注入后**/
select id, user_name, real_name, portrait, gender, create_time from sys_user order by create_time desc limit 1,5
这是后台的分页就完成了,是不是非常简单呢。
PageInfo这个类是插件里的类,对应字段的翻译如下
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//排序
private String orderBy;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List list;
//第一页
private int firstPage;
//前一页
private int prePage;
//下一页
private int nextPage;
//最后一页
private int lastPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
推荐文献
MyBatis Generator:https://blog.csdn.net/qq_36120267/article/details/81251679
PageHelper分页插件源码及原理剖析:https://blog.csdn.net/qq_36120267/article/details/81940481