Mybatis 分页插件 3.7.3 发布 - 开源中国社区
Float_left Icon_close
Mybatis 分页插件 3.7.3 发布
Liuzh_533 2015年05月22日

Mybatis 分页插件 3.7.3 发布

Liuzh_533 Liuzh_533 发布于2015年05月22日 收藏 49 评论 32

做APP,小程序就上开源众包。世界杯期间免费领2600元启动金。>>>  

Mybatis分页插件 - PageHelper

如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。

分页插件支持任何复杂的单表、多表分页,部分特殊情况请看重要提示

想要使用分页插件?请看如何使用分页插件

该插件目前支持以下数据库的物理分页:

  1. Oracle

  2. Mysql

  3. MariaDB

  4. SQLite

  5. Hsqldb

  6. PostgreSQL

  7. DB2

  8. SqlServer(2005+)

  9. Informix

3.7.3更新日志:

  • Page继承的ArrayList,原先会根据pageSize初始化大小,这就导致当pageSize过大(如Integer.MAX_VALUE)时的内存溢出(实际数据量很小),此处改为初始化大小为0的List。

  • 当想查询某页后面的全部数据时,可以使用PageHelper.startPage(pageNum, Integer.MAX_VALUE)进行分页,RowBounds(offset, Integer.MAX_VALUE)一样。

  • 针对PageHelper.startPage(1, Integer.MAX_VALUE)优化,会取消分页,直接查询全部数据(能起到pageSizeZero参数所起的作用)。

  • 针对RowBounds(0, Integer.MAX_VALUE)优化,会取消分页,直接查询全部数据(能起到pageSizeZero参数所起的作用)。

Maven坐标

<dependency>
 <groupId>com.github.pagehelper</groupId>
 <artifactId>pagehelper</artifactId>
 <version>3.7.3</version>
</dependency>

下载JAR包

分页插件pagehelper.jar:

由于使用了sql解析工具,你还需要下载jsqlparser.jar(这个文件完全独立,不依赖其他):

项目文档:

如何使用分页插件

如果要使用分页插件,这篇文档一定要看,看完肯定没有问题。

如果和Spring集成不熟悉,可以参考下面两个MyBatis和Spring集成的框架

只有基础的配置信息,没有任何现成的功能,作为新手入门搭建框架的基础

这两个集成框架集成了MyBatis分页插件和MyBatis通用Mapper。

更新日志

包含全部的详细的更新日志。

重要提示

提示很重要,建议一定看一遍!

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:Mybatis 分页插件 3.7.3 发布
分享
评论(32)
最新评论
0

引用来自“SimonYe”的评论

在线程池环境下,ThreadLocal 会导致线程安全问题

引用来自“Liuzh_533”的评论

能举个例子说明会有什么问题吗?怎么产生的?
用dubbo,使用默认的dubbo协议。用分页插件,就会存在问题。
0

引用来自“SimonYe”的评论

在线程池环境下,ThreadLocal 会导致线程安全问题
能举个例子说明会有什么问题吗?怎么产生的?
0

引用来自“SimonYe”的评论

在线程池环境下,ThreadLocal 会导致线程安全问题

引用来自“Liuzh_533”的评论

不会产生线程安全问题,按照文档要求使用,不会有问题。MyBatis大多数异常在Executor调用后,发生异常会自动清除状态。。其他情况下的异常会导致线程不可用,不属于分页插件的问题。
会有问题,如果这个处理线程会被重复使用,就会产生问题。
0

引用来自“SimonYe”的评论

在线程池环境下,ThreadLocal 会导致线程安全问题
不会产生线程安全问题,按照文档要求使用,不会有问题。MyBatis大多数异常在Executor调用后,发生异常会自动清除状态。。其他情况下的异常会导致线程不可用,不属于分页插件的问题。
0
在线程池环境下,ThreadLocal 会导致线程安全问题
0

引用来自“liu13430”的评论

3.7.5版本的
PageInfo,page.isIsLastPage(),page.isIsFirstPage()
这两个方法怎样有两个is?
你可以看看源码
0
3.7.5版本的
PageInfo,page.isIsLastPage(),page.isIsFirstPage()
这两个方法怎样有两个is?
0

引用来自“liu13430”的评论

我想问问有在生产环境用过的吗?

引用来自“Liuzh_533”的评论

我刚测试下发现3.7.5这个版本设置的reasonable=true合理化不起作用,
PageHelper.startPage(-1, 10);
List<GameBetDetail> findSaleInfo = gameBetDetailService.findSaleInfo();
System.out.println("=======" + findSaleInfo.size());
结果集的size=0  
0

引用来自“liu13430”的评论

我想问问有在生产环境用过的吗?
0
我想问问有在生产环境用过的吗?
0

引用来自“admin-user”的评论

为什么ajax响应回来的Page<User>类型的数据是list<User>类型的数据,就是没有page里面的属性。可能是什么原因导致的呢

引用来自“Liuzh_533”的评论

因为Page继承的ArrayList,所以没有其他的属性,所以需要自己对Page进行包装。。你可以参考自带的PageInfo类。

引用来自“admin-user”的评论

pageinfo里面好多属性没有set方法。。。。

引用来自“admin-user”的评论

原来不用set...
Page<User> users = (Page<User>)mapper.getAllUsers();
PageInfo<User> pages = new PageInfo<User>(users);
这样属性就都有了

引用来自“Liuzh_533”的评论

Page<User> users = (Page<User>)mapper.getAllUsers();
这一步不必这么写,直接返回List就行,不需要在这儿强制转换。
我的方法返回的是list集合,不加会报错
0
好的 谢谢
0

引用来自“admin-user”的评论

为什么ajax响应回来的Page<User>类型的数据是list<User>类型的数据,就是没有page里面的属性。可能是什么原因导致的呢

引用来自“Liuzh_533”的评论

因为Page继承的ArrayList,所以没有其他的属性,所以需要自己对Page进行包装。。你可以参考自带的PageInfo类。

引用来自“admin-user”的评论

pageinfo里面好多属性没有set方法。。。。

引用来自“admin-user”的评论

原来不用set...
Page<User> users = (Page<User>)mapper.getAllUsers();
PageInfo<User> pages = new PageInfo<User>(users);
这样属性就都有了
Page<User> users = (Page<User>)mapper.getAllUsers();
这一步不必这么写,直接返回List就行,不需要在这儿强制转换。
0

引用来自“admin-user”的评论

为什么ajax响应回来的Page<User>类型的数据是list<User>类型的数据,就是没有page里面的属性。可能是什么原因导致的呢

引用来自“Liuzh_533”的评论

因为Page继承的ArrayList,所以没有其他的属性,所以需要自己对Page进行包装。。你可以参考自带的PageInfo类。

引用来自“admin-user”的评论

pageinfo里面好多属性没有set方法。。。。
原来不用set...
Page<User> users = (Page<User>)mapper.getAllUsers();
PageInfo<User> pages = new PageInfo<User>(users);
这样属性就都有了
0
有可以运行的例子吗
0
强大
0

引用来自“admin-user”的评论

为什么ajax响应回来的Page<User>类型的数据是list<User>类型的数据,就是没有page里面的属性。可能是什么原因导致的呢

引用来自“Liuzh_533”的评论

因为Page继承的ArrayList,所以没有其他的属性,所以需要自己对Page进行包装。。你可以参考自带的PageInfo类。

引用来自“admin-user”的评论

pageinfo里面好多属性没有set方法。。。。
直接用Page<User>类型的数据,然后使用jstl渲染JSP,就会出现问题
0

引用来自“admin-user”的评论

为什么ajax响应回来的Page<User>类型的数据是list<User>类型的数据,就是没有page里面的属性。可能是什么原因导致的呢

引用来自“Liuzh_533”的评论

因为Page继承的ArrayList,所以没有其他的属性,所以需要自己对Page进行包装。。你可以参考自带的PageInfo类。
pageinfo里面好多属性没有set方法。。。。
0
好的谢谢
0

引用来自“admin-user”的评论

为什么ajax响应回来的Page<User>类型的数据是list<User>类型的数据,就是没有page里面的属性。可能是什么原因导致的呢
因为Page继承的ArrayList,所以没有其他的属性,所以需要自己对Page进行包装。。你可以参考自带的PageInfo类。
顶部