Mybatis 分页插件 3.6.0 发布

Liuzh_533
 Liuzh_533
发布于 2015年02月04日
收藏 74

Mybatis分页插件 - PageHelper

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

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

  1. Oracle

  2. Mysql

  3. MariaDB

  4. SQLite

  5. Hsqldb

  6. PostgreSQL

  7. DB2

  8. SqlServer(2005+)

最新版本为3.6.0

Maven坐标

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

下载JAR包

分页插件pagehelper.jar:

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

3.6.0更新日志:

  • 支持db2数据库

  • 支持sqlserver(2005+)数据库

  • sqlserver注意事项:

    • 请先保证你的SQL可以执行

    • sql中最好直接包含order by,可以自动从sql提取

    • 如果没有order by,可以通过入参提供,但是需要自己保证正确

    • 如果sql有order by,可以通过orderby参数覆盖sql中的order by

    • order by的列名不能使用别名(UNION,INTERSECT,MINUS,EXCEPT等复杂sql不受限制,具体可以自己尝试)

    • 表和列使用别名的时候不要使用单引号(')

  • 简单修改结构

  • startPage方法返回值从void改为Page,获取Page后可以修改参数值

  • Page增加一个针对sqlserver的属性orderBy,用法看上面的注意事项

  • Page增加了一个链式赋值的方法,可以像下面这样使用: PageHelper.startPage(1,10).count(false).reasonable(true).pageSizeZero(false)

  • PageHelper增加了startPage(int pageNum, int pageSize,String orderBy)方法,针对sqlserver

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

最新评论(21

Liuzh_533
Liuzh_533

引用来自“bboss”的评论

bboss确实是很大的一个项目,bboss持久层是bboss里面的一个子模块,看到楼主写的mybatis分页插件,就想着和bboss持久层的分页功能做个比较,如果没有可比性,就此打住,冒昧打扰了。
sqlserver2005+分页相关文章:http://blog.csdn.net/isea533/article/details/43161515

主要使用了jsqlparser,count查询也是使用的jsqlparser。
技术论坛来扯淡
次奥,更新这么频繁,
bboss
bboss

引用来自“bboss”的评论

bboss确实是很大的一个项目,bboss持久层是bboss里面的一个子模块,看到楼主写的mybatis分页插件,就想着和bboss持久层的分页功能做个比较,如果没有可比性,就此打住,冒昧打扰了。

引用来自“Liuzh_533”的评论

Mybatis分页插件实际上如果只支持某个数据库,基本上一个类就能实现。但是Mybatis分页插件考虑的比较多,大部分是优化方面的,主要特点如下:

1.自动将原sql转换为count(*)查询,不是简单的包装一层。是通过解析sql,移除没有影响的order by,根据select 列判断是否能直接将列替换为count(*).

例如:select id,name,code from country order by id desc会转换为select count(*) from country.

支持任意复杂各种嵌套的sql。

2.分页sql和普通的没有太大区别,最有特点就是sqlserver2005+,自动将任意复杂度的sql转换为分页查询语句。

3.使用起来方便,任何一个正常的select查询语句,在前面加个PageHelper.startPage的静态方法就会变成分页查询,很自由,并且有很多参数可以适应不同情况的需要。

其他特点和Mybatis的关联性太强,写出来需要解释的太多就不多写了。
个人觉得改sql语句还是风险比较大,bboss的做法就是,除了自动封装构建查总记录数的sql的分页接口,还提供了从接口上传入总记录数,或者传入查总记录数的sql的两种分页接口,这样就把决定权交给了开发人员而不是框架,降低了框架的处理复杂度,也增加了程序的可靠性,这个在下面的文章中有具体的描述:
http://yin-bp.iteye.com/blog/1703344

另外请教一下,sqlserver 2005+的分页sql是怎么自动封装的,其实bboss持久层内部封装分页sql也是通过插件机制实现的,只是这些机制没有暴露给开发人员,我在下面的博文中专门说明了,特定的数据库分页机制的插件编写和配置方法:
http://yin-bp.iteye.com/blog/1278360

子弹兄
子弹兄

引用来自“子弹兄”的评论

mybatis是什么语言?java?不知者莫怪啊0

引用来自“Liuzh_533”的评论

mybatis有java和.net两个版本。

java版本用的比较多吧,.net版本的不熟悉。
没有php吗
Liuzh_533
Liuzh_533

引用来自“bboss”的评论

bboss确实是很大的一个项目,bboss持久层是bboss里面的一个子模块,看到楼主写的mybatis分页插件,就想着和bboss持久层的分页功能做个比较,如果没有可比性,就此打住,冒昧打扰了。
还有很麻烦的一点就是。

为了测试全部支持的数据库,这些数据库我都安装了。而且所有测试都在这些数据库上测试过。
Liuzh_533
Liuzh_533

引用来自“bboss”的评论

bboss确实是很大的一个项目,bboss持久层是bboss里面的一个子模块,看到楼主写的mybatis分页插件,就想着和bboss持久层的分页功能做个比较,如果没有可比性,就此打住,冒昧打扰了。
Mybatis分页插件实际上如果只支持某个数据库,基本上一个类就能实现。但是Mybatis分页插件考虑的比较多,大部分是优化方面的,主要特点如下:

1.自动将原sql转换为count(*)查询,不是简单的包装一层。是通过解析sql,移除没有影响的order by,根据select 列判断是否能直接将列替换为count(*).

例如:select id,name,code from country order by id desc会转换为select count(*) from country.

支持任意复杂各种嵌套的sql。

2.分页sql和普通的没有太大区别,最有特点就是sqlserver2005+,自动将任意复杂度的sql转换为分页查询语句。

3.使用起来方便,任何一个正常的select查询语句,在前面加个PageHelper.startPage的静态方法就会变成分页查询,很自由,并且有很多参数可以适应不同情况的需要。

其他特点和Mybatis的关联性太强,写出来需要解释的太多就不多写了。
Liuzh_533
Liuzh_533

引用来自“子弹兄”的评论

mybatis是什么语言?java?不知者莫怪啊0
mybatis有java和.net两个版本。

java版本用的比较多吧,.net版本的不熟悉。
子弹兄
子弹兄
mybatis是什么语言?java?不知者莫怪啊0
bboss
bboss

引用来自“bboss”的评论

bboss确实是很大的一个项目,bboss持久层是bboss里面的一个子模块,看到楼主写的mybatis分页插件,就想着和bboss持久层的分页功能做个比较,如果没有可比性,就此打住,冒昧打扰了。

引用来自“Liuzh_533”的评论

bboss和hibernate分页相比怎样呢?

Mybatis分页插件的功能相比hibernate来说,还有很多优势。只要看看调用的代码基本上都能理解。
我在上面写了bboss的分页代码,更多的分页功能在文档中写得比较详细:
http://yin-bp.iteye.com/blog/1703344

同时也看了你做的mybatis插件分页的例子,还是比较简单和直观的,hibernate的没有去研究过,所以不好比较。
返回顶部
顶部