Mybatis 的分页插件PageHelper-4.1.1的使用
2017-01-17 16:46
555 查看
Mybatis 的分页插件 PageHelper项目地址:http://git.oschina.net/free/Mybatis_PageHelper 文档地址:http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown
我用的版本是PageHelper-4.1.1、Mybatis-3.3.0PageHelper 依赖于 jsqlparser-0.9.4.jar
使用方法:1、根据Mybatis的版本下载对应版本的PageHelper ( Mybatis最低版本不能低于3.3 )2、在Mybatis的配置文件 Mybatis-Configu.xml中配置PageHelper插件,配置示例: plugins插件的配置在 settings之后 在environments之前
settings中设置Mybatis的一些额外的运行参数 如是否开启延迟加载,动态代理使用CG-LIB,或JAVALIB等
<plugins> <!– PageHelper4.1.1 –> <plugin interceptor=“com.github.pagehelper.PageHelper”> <property name=“dialect” value=“oracle”/> <property name=“offsetAsPageNum” value=“false”/> <property name=“rowBoundsWithCount” value=“false”/> <property name=“pageSizeZero” value=“true”/> <property name=“reasonable” value=“false”/> <property name=“supportMethodsArguments” value=“false”/> <property name=“returnPageInfo” value=“none”/> </plugin> </plugins>
3、使用方法pageHelper会使用ThreadLocal获取到同一线程中的变量信息,各个线程之间的Threadlocal不会相互干扰,也就是Thread1中的ThreadLocal1之后获取到Tread1中的变量的信息,不会获取到Thread2中的信息所以在多线程环境下,各个Threadlocal之间相互隔离,可以实现,不同thread使用不同的数据源或不同的Thread中执行不同的SQL语句所以,PageHelper利用这一点通过拦截器获取到同一线程中的预编译好的SQL语句之后将SQL语句包装成具有分页功能的SQL语句,并将其再次赋值给下一步操作,所以实际执行的SQL语句就是有了分页功能的SQL语句PageHelper只对紧跟着的第一个SQL语句起作用如上:所以若一个方法中涉及到多个查询,需要小心,避免为不需要分页的添加了分页,而真正需要分页的却没有被分页1)、统计总数,(将SQL语句变为 select count(0) from xxx,只对简单SQL语句其效果,复杂SQL语句需要自己写) Page<?> page = PageHelper.startPage(1,-1);
long count = page.getTotal();
2)、分页,pageNum - 第N页, pageSize - 每页M条数 A、只分页不统计(每次只执行分页语句) PageHelper.startPage([pageNum],[pageSize]);
List<?> pagelist = queryForList( xxx.class, “queryAll” , param);
//pagelist就是分页之后的结果 B、分页并统计(每次执行2条语句,一条select count语句,一条分页语句)适用于查询分页时数据发生变动,需要将实时的变动信息反映到分页结果上
Page<?> page = PageHelper.startPage([pageNum],[pageSize],[iscount]);
List<?> pagelist = queryForList( xxx.class , “queryAll” , param);
long count = page.getTotal();
//也可以 List<?> pagelist = page.getList(); 获取分页后的结果集
3)、使用PageHelper查全部(不分页) PageHelper.startPage(1,0);
List<?> alllist = queryForList( xxx.class , “queryAll” , param);
4)、PageHelper的其他API String orderBy = PageHelper.getOrderBy(); //获取orderBy语句
Page<?> page = PageHelper.startPage(Object params);
Page<?> page = PageHelper.startPage(int pageNum, int pageSize);
Page<?> page = PageHelper.startPage(int pageNum, int pageSize, boolean isCount);
Page<?> page = PageHelper.startPage(pageNum, pageSize, orderBy);
Page<?> page = PageHelper.startPage(pageNum, pageSize, isCount, isReasonable); //isReasonable分页合理化,null时用默认配置
Page<?> page = PageHelper.startPage(pageNum, pageSize, isCount, isReasonable, isPageSizeZero); //isPageSizeZero是否支持PageSize为0,true且pageSize=0时返回全部结果,false时分页,null时用默认配置5)、默认值 //RowBounds参数offset作为PageNum使用 - 默认不使用 private boolean offsetAsPageNum = false; //RowBounds是否进行count查询 - 默认不查询 private boolean rowBoundsWithCount = false; //当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果 private boolean pageSizeZero = false; //分页合理化 private boolean reasonable = false; //是否支持接口参数来传递分页参数,默认false private boolean supportMethodsArguments = false;
来自为知笔记(Wiz)
我用的版本是PageHelper-4.1.1、Mybatis-3.3.0PageHelper 依赖于 jsqlparser-0.9.4.jar
使用方法:1、根据Mybatis的版本下载对应版本的PageHelper ( Mybatis最低版本不能低于3.3 )2、在Mybatis的配置文件 Mybatis-Configu.xml中配置PageHelper插件,配置示例: plugins插件的配置在 settings之后 在environments之前
settings中设置Mybatis的一些额外的运行参数 如是否开启延迟加载,动态代理使用CG-LIB,或JAVALIB等
<plugins> <!– PageHelper4.1.1 –> <plugin interceptor=“com.github.pagehelper.PageHelper”> <property name=“dialect” value=“oracle”/> <property name=“offsetAsPageNum” value=“false”/> <property name=“rowBoundsWithCount” value=“false”/> <property name=“pageSizeZero” value=“true”/> <property name=“reasonable” value=“false”/> <property name=“supportMethodsArguments” value=“false”/> <property name=“returnPageInfo” value=“none”/> </plugin> </plugins>
3、使用方法pageHelper会使用ThreadLocal获取到同一线程中的变量信息,各个线程之间的Threadlocal不会相互干扰,也就是Thread1中的ThreadLocal1之后获取到Tread1中的变量的信息,不会获取到Thread2中的信息所以在多线程环境下,各个Threadlocal之间相互隔离,可以实现,不同thread使用不同的数据源或不同的Thread中执行不同的SQL语句所以,PageHelper利用这一点通过拦截器获取到同一线程中的预编译好的SQL语句之后将SQL语句包装成具有分页功能的SQL语句,并将其再次赋值给下一步操作,所以实际执行的SQL语句就是有了分页功能的SQL语句PageHelper只对紧跟着的第一个SQL语句起作用如上:所以若一个方法中涉及到多个查询,需要小心,避免为不需要分页的添加了分页,而真正需要分页的却没有被分页1)、统计总数,(将SQL语句变为 select count(0) from xxx,只对简单SQL语句其效果,复杂SQL语句需要自己写) Page<?> page = PageHelper.startPage(1,-1);
long count = page.getTotal();
2)、分页,pageNum - 第N页, pageSize - 每页M条数 A、只分页不统计(每次只执行分页语句) PageHelper.startPage([pageNum],[pageSize]);
List<?> pagelist = queryForList( xxx.class, “queryAll” , param);
//pagelist就是分页之后的结果 B、分页并统计(每次执行2条语句,一条select count语句,一条分页语句)适用于查询分页时数据发生变动,需要将实时的变动信息反映到分页结果上
Page<?> page = PageHelper.startPage([pageNum],[pageSize],[iscount]);
List<?> pagelist = queryForList( xxx.class , “queryAll” , param);
long count = page.getTotal();
//也可以 List<?> pagelist = page.getList(); 获取分页后的结果集
3)、使用PageHelper查全部(不分页) PageHelper.startPage(1,0);
List<?> alllist = queryForList( xxx.class , “queryAll” , param);
4)、PageHelper的其他API String orderBy = PageHelper.getOrderBy(); //获取orderBy语句
Page<?> page = PageHelper.startPage(Object params);
Page<?> page = PageHelper.startPage(int pageNum, int pageSize);
Page<?> page = PageHelper.startPage(int pageNum, int pageSize, boolean isCount);
Page<?> page = PageHelper.startPage(pageNum, pageSize, orderBy);
Page<?> page = PageHelper.startPage(pageNum, pageSize, isCount, isReasonable); //isReasonable分页合理化,null时用默认配置
Page<?> page = PageHelper.startPage(pageNum, pageSize, isCount, isReasonable, isPageSizeZero); //isPageSizeZero是否支持PageSize为0,true且pageSize=0时返回全部结果,false时分页,null时用默认配置5)、默认值 //RowBounds参数offset作为PageNum使用 - 默认不使用 private boolean offsetAsPageNum = false; //RowBounds是否进行count查询 - 默认不查询 private boolean rowBoundsWithCount = false; //当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果 private boolean pageSizeZero = false; //分页合理化 private boolean reasonable = false; //是否支持接口参数来传递分页参数,默认false private boolean supportMethodsArguments = false;
来自为知笔记(Wiz)
附件列表
相关文章推荐
- TCP UDP传输原理 及 数据块,分节,分组,数据报,数据包的区别
- 创建Image图像的几种方法
- mysql报错:/usr/sbin/mysqld:unknown variable 'default-character-set=utf8'
- mongodb中根据时间范围进行查询
- LeetCode-Hash-290. Word Pattern
- 32位64位操作系统基本数据类型字节大小
- 互联网支付-技术和业务总结(1)
- CMake手册详解 (十一)
- 清理iOS工程里无用的图片,可瘦身ipa
- Hibernate (四)基本特性
- MyBatis源码解析一
- BZOJ 1002: [FJOI2007]轮状病毒
- Linux下Matlab单文件运行
- 1.初识代码审计-基础
- WPF实现滚动显示的TextBlock
- 顺序容器的简单初始化
- Angularjs实现搜索关键字高亮显示效果
- CMake手册详解 (十)
- 求最大蛇的长度 本题只是笔记 代码是错的
- 开此博客感言