mybatis分页插件---PageHeper
2017-05-02 15:00
141 查看
PageHelper是一款使用非常简单的Mybatis分页插件,在Mybatis的配置文件中以插件的形式使用。使用步骤如下:
一、导入jar包
二、修改配置文件
在mybatis.xml配置文件中加入以下代码
PageHelper是通过mybatis的pulgin实现了Interceptor接口,工作过程如下:
pageHelper会使用ThreadLocal获取到同一线程中的变量信息,各个线程之间的Threadlocal不会相互干扰,也就是Thread1中的ThreadLocal1之后获取到Tread1中的变量的信息,不会获取到Thread2中的信息。所以在多线程环境下,各个Threadlocal之间相互隔离,可以实现,不同thread使用不同的数据源或不同的Thread中执行不同的SQL语句。
因此,PageHelper利用这一点通过拦截器获取到同一线程中的预编译好的SQL语句之后将SQL语句包装成具有分页功能的SQL语句,并将其再次赋值给下一步操作,所以实际执行的SQL语句就是有了分页功能的SQL语句
四、PageHelper的使用
在service层调用Dao层之前,使用PageHelper进行分页,就可以将分页信息切入到sql语句中了。
使用PageHelper进行分页后,代码中list集合对象中就得到的是分页后的信息。为了方便使用“上一页”、“下一页”、“首页”等等分页信息,一般需要将分页后的list对象再进行封装,封装后就可以使用“总页码”,“上一页”等这种功能。
五、将结果封装成PageInfo对象
一、导入jar包
jsqlparser-0.9.5.jar pagehelper-4.2.1.jar
二、修改配置文件
在mybatis.xml配置文件中加入以下代码
<plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库--> <property name="dialect" value="mysql"/> </plugin> </plugins>三、工作原理
PageHelper是通过mybatis的pulgin实现了Interceptor接口,工作过程如下:
pageHelper会使用ThreadLocal获取到同一线程中的变量信息,各个线程之间的Threadlocal不会相互干扰,也就是Thread1中的ThreadLocal1之后获取到Tread1中的变量的信息,不会获取到Thread2中的信息。所以在多线程环境下,各个Threadlocal之间相互隔离,可以实现,不同thread使用不同的数据源或不同的Thread中执行不同的SQL语句。
因此,PageHelper利用这一点通过拦截器获取到同一线程中的预编译好的SQL语句之后将SQL语句包装成具有分页功能的SQL语句,并将其再次赋值给下一步操作,所以实际执行的SQL语句就是有了分页功能的SQL语句
四、PageHelper的使用
在service层调用Dao层之前,使用PageHelper进行分页,就可以将分页信息切入到sql语句中了。
PageHelper.startPage(pageNum ,pageSize); //ִ调用服务层,服务层调用DAO来执行sql语句 List<Category> list = categoryService.queryMessage(Integer.parseInt(id));pageNum表示当前处于第几页,pageSize表示每页显示多少条记录
使用PageHelper进行分页后,代码中list集合对象中就得到的是分页后的信息。为了方便使用“上一页”、“下一页”、“首页”等等分页信息,一般需要将分页后的list对象再进行封装,封装后就可以使用“总页码”,“上一页”等这种功能。
五、将结果封装成PageInfo对象
PageInfo<Category> page=new PageInfo<Category>(list);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 = 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; ......由此可见,封装成PageInfo对象的好处。
相关文章推荐
- Mybatis分页插件-PageHepler的使用
- SSM 使用 mybatis 分页插件 pagehepler 实现分页
- SSM使用mybatis分页插件pagehepler实现分页示例
- Mybatis分页插件-PageHepler的使用
- mybatis系列五:使用pagehelper5插件进行分页
- [置顶] MyBatis基于Spring-boot集成通用Mapper以及pagehelper分页插件(含源码下载)
- mybatis分页插件PageHelper的使用
- MyBatis中如何使用PageHelper插件实现 分页
- spring-boot 集成mybatis的分页插件PageHelper和Generator (番外)
- Mybatis 的分页插件PageHelper-4.1.1的使用
- 使用mybatis分页插件PageHelper5.0.0遇到的问题总结
- Mybatis的分页插件PageHelp:Page对象中的pageSize等属性无法序列化,无法转换为json字符串
- Mybatis的分页插件pagehelper的使用介绍
- Mybatis 的分页插件 PageHelper的使用注意事项
- MyBatis(七)——使用PageHelper插件进行分页
- Mybatis分页插件-PageHelper(5.0)的使用
- SpringBoot Mybatis PageHelper分页插件的两种用法(二)
- Mybatis物理分页插件PageHelper 5.0
- mybatis的分页插件 PageHelper、超级简单实用
- Mybatis分页插件PageHelper如何直接返回PageInfo