使用非常简单
1、maven web项目,pom.xml 引入 pagehelper 依赖
com.github.pagehelper
pagehelper
5.1.4
2、在Mybatis中全局配置文件中配置拦截器插件
3、Mapper映射文件和以前书写没有区别,里面不要使用分页语句就行,交给分页插件来完成
public List selectUserBylike(@Param("username") String username,
@Param("state") Integer state);
select
from t_user
and username like concat('%',concat(#{username},'%'))
and state like #{state}
4、分页插件支持好几种调用方式:Mapper接口方式的调用(推荐使用)
设置分页:PageHelper.startPage(当前页码,每页多少条)
只有紧跟在 PageHelper.startPage
方法后的第一个Mybatis的查询(Select)方法会被分页。
Page类:其实就是ArrayList的子类,封装了分页相关的信息
PagerInfo类:封装了更丰富分页相关的信息,更多使用它,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 list;
//第一页
private int firstPage;
//前一页
private int prePage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
Page Page = PageHelper.startPage(1, 10);//第1页的10个数据
//List userList = userMapper.selectUserBylike("admin",1);
List userList = userMapper.selectUserBylike(null,null);
//使用PageInfo对象获取,目的是把List强转成Page对象,从而得到分页结果
PageInfo pageInfo = new PageInfo(userList);
System.out.println(pageInfo);
System.out.println(pageInfo.getTotal());
System.out.println(pageInfo.isHasNextPage());
注意:什么时候会导致不安全的分页?
PageHelper
方法使用了静态的 ThreadLocal
参数,分页参数和线程是绑定的。
只要你可以保证在 PageHelper
方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为 PageHelper
在 finally
代码段中自动清除了 ThreadLocal
存储的对象。
如果代码在进入 Executor
前发生异常,就会导致线程不可用,这属于人为的 Bug(例如接口方法和 XML 中的不匹配,导致找不到 MappedStatement
时), 这种情况由于线程不可用,也不会导致 ThreadLocal
参数被错误的使用。
参考文章:PageHelper分页插件源码及原理剖析
GitHub地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md
码云地址:https://gitee.com/free/Mybatis_PageHelper
文档地址:https://apidoc.gitee.com/free/Mybatis_PageHelper
Method API: https://apidoc.gitee.com/free/Mybatis_PageHelper/com/github/pagehelper/page/PageMethod.html
更多信息(比如:springboot集成它)查看官方文档,资料挺多,看它们就ok
ends~