mybatis分页插件---PageHeper
来源:互联网 发布:python计算器源代码 编辑:程序博客网 时间:2024/06/10 05:27
PageHelper是一款使用非常简单的Mybatis分页插件,在Mybatis的配置文件中以插件的形式使用。使用步骤如下:
一、导入jar包
jsqlparser-0.9.5.jarpagehelper-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对象的好处。
0 0
- mybatis分页插件---PageHeper
- mybatis分页/分页插件
- mybatis分页插件(物理分页)
- mybatis分页插件实现分页
- Mybatis分页插件
- Mybatis分页插件 - 示例
- Mybatis分页插件更新
- mybatis generator 分页插件
- Mybatis分页插件更新
- Mybatis分页插件 - 示例
- MyBatis分页插件
- Mybatis分页插件更新
- Mybatis一个分页插件
- mybatis 分页插件
- mybatis分页插件
- [Mybatis]分页(基于插件)
- 自定义mybatis分页插件
- mybatis分页插件
- 加盐hash保存密码的正确方式
- 矩阵——poj3233Matrix Power Series
- 双指针 532. K-diff Pairs in an Array
- 本机上访问tomcat项目可以,局域网内的其他机器访问不到项目
- OpenGL(十一) 可编程管线 基础光照 的实现
- mybatis分页插件---PageHeper
- SpringCloud Demo
- 按时分秒倒计时、且获取服务器时间、且可以同时多个倒计时
- 后台处理JSON数据
- 计算几何——线段的性质
- AJAX入门(原生的AJAX)
- java 反射机制详解
- nginx做负载均衡的几种方式
- 纯css实现n个导航栏均分效果