初识PageHelper
PageHelper是一款强大的开源免费的Mybatis第三方分页插件,其工作原理是利用mybatis拦截器,在查询数据库的时候拦截下sql,并修改sql使其实现分页效果。
一、配置PageHelper
1、引入依赖
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
<!-- pagehelper的依赖包:jsqlparser -->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>0.9.5</version>
</dependency>
2、配置插件(二选一)
在mybatis-config.xml中使用
<! --
在配置文件中, 插件位置必须满足以下顺序的要求:
typeAliases?,typeHandlers?,objectFactory ?, objectWrapperFactory ?, plugins ?, environment?, databaseIdProvider?,mappers?
-- >
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageHelper">
<!-- 配置参数-- >
<!-- 数据库方言 -->
<property name="dialect" value="MySQL"/>
<!-- 设置为true时,使用RowBounds分页会进行count查询 会去查询出总数 -->
<property name="rowBoundsWithCount" value="true"/>
。。。
<property name="参数n" value="值n"/>
</plugin>
</plugins>
在Spring application.xml中使用
<!-- pageHelper 分页插件 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageHelper">
<property name="properties">
<value>
dialect=mysql
rowBoundsWithCount=true
。。。
参数n =值n
</value>
</property>
</bean>
</array>
</property>
3、至此配置就完成了,一起来看看怎样使用吧!!!
二、使用PageHelper
service层代码如下
public PageInfo findPage(int page,int pageSize){
PageHelper.startPage(page,pageSize);
List List=userDao.findAll();
PageInfo pageInfo = new PageInfo(list);
return pageInfo;
}
注:此时返回的对象就是pageInfo对象,里面包含很多属性一起来看下吧
public class PageInfo implements Serializable {
private static final long serialVersionUID = 1L;
//当前页码
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
}
结束语:看完此片文章你就可以操练起来了哟