• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

resultbounds: resultbounds 是一个 MyBatis 分页插件,支持 MyBatis3.1、3.2、3.3、3 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

resultbounds

开源软件地址:

https://gitee.com/garbagecode/resultbounds

开源软件介绍:

resultbounds - MyBatis分页插件

该插件的可取之处

以简单的方式提供一个优雅的 MyBatis 物理分页功能,不需要修改代码就可以把默认的分页换成物理分页。目前该插件的实现经过几次重构,可读性得到很大的提升,非常适合想了解 MyBatis 分页插件的以及想自己实现一个的同仁。 (不建议用在公司项目上,理由是未经过项目实践)

支持的 java 版本

java1.6+(包括java1.6)

支持的 MyBatis 版本

MyBatis 3.4: 支持  (在 MyBatis-3.4.4 版本下测试通过)MyBatis 3.3: 支持  (在 MyBatis-3.3.1 版本下测试通过)MyBatis 3.2: 支持  (在 MyBatis-3.2.8 版本下测试通过)MyBatis 3.1: 支持  (在 MyBatis-3.1.1 版本下测试通过)MyBatis 3.0: 不支持(在 MyBatis-3.0.6 版本下测试失败)MyBatis 2.3: 不支持(在 MyBatis-2.3.5 版本下测试失败)

支持的数据库

目前只实现了 MySql 分页,可以自己实现 Dialect 接口,用来支持其它的数据库分页。

编译代码

编译代码mvn -DskipTests install执行测试1、在数据库里执行文件 src/test/resources/resultbounds-mysql.sql 中的 SQL 语句。2、把 src/test/resources/mybatis-config.xml 中的用户名和密码替换成自己数据库的用户名和密码。3、执行测试命令 mvn test

在 MyBatis 配置文件中加上这个分页插件

<configuration>  ...  <plugins>    <plugin interceptor="com.retaiyang.resultbounds.PaginationInterceptor">      <!-- 可以把 value 属性值替换成自己实现的 Dialect -->      <property name="dialect" value="com.retaiyang.resultbounds.dialect.MySqlDialect" />    </plugin>  </plugins>  ...</configuration>

在代码中使用这个插件进行分页的示例

// 示例一// 获取 SqlSession 对象SqlSession session = ...// 从第 4 条开始,取 5 条记录List<Student> studentList = session.selectList("test.student.getStudentList", null, new RowBounds(3, 5));// 示例二// 获取 SqlSession 对象SqlSession session = ...// 从第 4 条开始,取 5 条记录List<Student> studentList = session.getMapper(StudentMapper.class).getStudentList(new RowBounds(3, 5));

在查询的同时统计记录总数

// 示例一// 获取 SqlSession 对象SqlSession session = ...// 设置分页参数从第 4 条开始,取 5 条记录ResultBounds resultBounds = new ResultBounds(3, 5);// 获取分页后的查询结果List<Student> studentList = session.selectList("test.student.getStudentList", null, resultBounds);// 获取记录总数long total = resultBounds.getTotal(session);// 示例二// 获取 SqlSession 对象SqlSession session = ...// 设置分页参数从第 4 条开始,取 5 条记录ResultBounds resultBounds = new ResultBounds(3, 5);// 获取分页后的查询结果List<Student> studentList = session.getMapper(StudentMapper.class).getStudentList(resultBounds);// 获取记录总数long total = resultBounds.getTotal(session);

若使用了 mybatis-spring-xxxx.jar 包整合了 Spring

在 MyBatis 配置文件中加上该插件的 Spring 版本

<configuration>  ...  <plugins>    <plugin interceptor="com.retaiyang.resultbounds.spring.TotalCountBeanInterceptor">      <property name="dialect" value="com.retaiyang.resultbounds.dialect.MySqlDialect" />    </plugin>  </plugins>  ...</configuration>

在 Spring 配置文件中加上这个

...<bean class="com.retaiyang.resultbounds.spring.TotalCountBean">  <property name="sqlSession" ref="sqlSession" /></bean>...

使用该插件的 Spring 版本后

...// 获取记录总数// 调用 ResultBounds.getTotal 方法的时候不需要给 SqlSession 参数了long total = resultBounds.getTotal(null);...

说明该插件各个类是干嘛用的

---- dialect  |---- Dialect                     生成分页语句、统计记录总数语句的接口  |---- MySqlDialect                Dialect 接口的 MySql 实现---- spring  |---- TotalCountBean  |---- TotalCountBeanInterceptor   这插件的 spring 版本---- MyBatisClassCreator            创建 MyBatis 中的类,在 PaginationInterceptor 中需要用它对参数动些手脚---- PaginationInterceptor          分页的主逻辑在这个类里---- ResultBounds                   RowBounds 的子类,加了一些实用的方法---- TotalCount                     用来统计记录总数

该分页插件的原理

通过 Mybatis 提供的插件机制实现拦截器 PaginationInterceptor 拦截查询操作,每次拦截查询操作后通过创建改造过的对象作为查询的参数达到分页的效果。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap