#MyBatis 分页插件 - PageHelper
如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件。
分页插件支持任何复杂的单表、多表分页,部分特殊情况请看重要提示。
想要使用分页插件?请看如何使用分页插件。
##物理分页
该插件目前支持以下数据库的物理分页:
Oracle
Mysql
MariaDB
SQLite
Hsqldb
PostgreSQL
DB2
SqlServer(2005,2008)
Informix
H2
SqlServer2012
Derby
分页插件默认会检测当前的数据库链接,自动选择对应的数据库分页。
你可以配置helperDialect
属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:
oracle
,mysql
,mariadb
,sqlite
,hsqldb
,postgresql
,db2
,sqlserver
,informix
,h2
,sqlserver2012
,derby
特别注意:使用 SqlServer2012 数据库时,需要手动指定为 sqlserver2012
,否则会使用 SqlServer2005 的方式进行分页。
##MyBatis 工具网站:http://mybatis.tk
##分页插件支持 MyBatis 3.1.0+(支持最新版本)
##分页插件 5.0
由于分页插件 5.0 版本和 4.2.x 实现完全不同,所以 master 分支为 5.x 版本,4.2 作为一个分支存在,如果有针对 4.2 的 PR,请注意提交到分支版本。
##分页插件最新版本为 5.0.0-beta 使用 PageHelper 你只需要在 classpath 中包含 pagehelper-x.x.x.jar 和 jsqlparser-0.9.5.jar。
如果你使用 Maven,你只需要在 pom.xml 中添加下面的依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0-beta</version>
</dependency>
##最近的更新日志
###5.0.0-beta
- 使用更好的方式处理分页逻辑
- 新的分页插件拦截器为
com.github.pagehelper.PageInterceptor
- 新的
PageHelper
是一个特殊的Dialect
实现类,以更友好的方式实现了以前的功能 - 新的分页插件仅有
dialect
一个参数,默认的dialect
实现类为PageHelper
PageHelper
仍然支持以前提供的参数,在最新的使用文档中已经全部更新PageHelper
的helperDialect
参数和以前的dialect
功能一样,具体可以看文档的参数说明- 增加了基于纯
RowBounds
和PageRowBounds
的分页实现,在com.github.pagehelper.dialect.rowbounds
包中,这是用于作为dialect
参数示例的实现,后面会补充更详细的文档 - 去掉了不适合出现在分页插件中的 orderby 功能,以后会提供单独的排序插件
- 去掉了
PageHelper
中不常用的方法 - 新的文档,更新历来更新日志中提到的重要内容,提供英文版本文档
###4.2.1
###4.2.0
- 使用新的方式进行分页,4.2版本是从5.0版本分离出来的一个特殊版本,这个版本兼容4.x的所有功能,5.0版本时为了简化分页逻辑,会去掉部分功能,所以4.2是4.x的最后一个版本。
- 支持 MyBatis 3.1.0+ 版本
- 增加对 Derby 数据库的支持
- 对除 informix 外的全部数据库进行测试,全部通过
- PageHelper增加手动清除方法
clearPage()
- 解决 SqlServer 多个
with(nolock)
时出错的问题 - 对CountMappedStatement 进行缓存,配置方式见BaseSqlUtil 319行
- 由于SqlServer的sql处理特殊,因此增加了两个SQL缓存,具体配置参考SqlServerDialect类
- 添加 sqlserver 别名进行排序功能,在解析sql时,会自动将使用的别名转换成列名 by panmingzhi
- 新增
sqlCacheClass
参数,该参数可选,可以设置sql缓存实现类,默认为SimpleCache
,当项目包含guava时,使用GuavaCache
,也可以通过参数sqlCacheClass
指定自己的实现类,有关详情看com.github.pagehelper.cache
包。 - 解决#135,增加/keep orderby/注解,SQL中包含该注释时,count查询时不会移出order by
- sqlserver没有orderby时,使用
order by rand()
#82 #118
##项目文档:
###1. 如何使用分页插件
如果要使用分页插件,这篇文档一定要看,看完肯定没有问题。
如果和 Spring 集成不熟悉,可以参考下面两个 MyBatis 和 Spring 集成的框架
只有基础的配置信息,没有任何现成的功能,作为新手入门搭建框架的基础
这两个集成框架集成了 PageHelper 和 通用 Mapper。
###2. 使用 RowBounds 和 PageRowBounds 方式
###3. 实现自己的分页插件
- helperDialect 方式
- dialect 方式
###4. SQL 缓存配置
- count sql 缓存,SqlServer 的缓存。
##更新日志
包含全部的详细的更新日志。
##重要提示
提示很重要,建议一定看一遍!
##提交 BUG
##相关链接
作者博客:http://blog.csdn.net/isea533
作者邮箱: [email protected]
本项目在 github 的项目地址:https://github.com/pagehelper/Mybatis-PageHelper
本项目在 gitosc 的项目地址:http://git.oschina.net/free/Mybatis_PageHelper
##MyBatis-3
MyBatis 专栏: