# resultbounds **Repository Path**: davidmr/resultbounds ## Basic Information - **Project Name**: resultbounds - **Description**: resultbounds 是一个 MyBatis 分页插件,提供优雅的 MyBatis 物理分页功能,同时支持在查询的同时统计满足条件的记录总数,以及支持对 Mapper 接口分页。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 8 - **Created**: 2017-05-16 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README resultbounds - MyBatis分页插件 ================================================== ### 该插件的可取之处 ### 在参考别人写的插件以及一年多来几次对这插件的重构,现在这插件的代码可读性还是不错的,用相对简单的方式提供了一个优雅的 MyBatis 物理分页功能。对想自己实现一个分页插件的,自认为还是挺值得参考的。 ### 该插件支持的 MyBatis 版本 ### MyBatis 3.1: 不支持 MyBatis 3.2: 不支持 MyBatis 3.3: 支持 ### 在 MyBatis 配置文件中加上这个分页插件 ### ``` ... ... ``` ### 在代码中使用这个插件进行分页的示例 ### ``` // 获取 SqlSession 对象 SqlSession session = ... // 从第 4 条开始,取 5 条记录 ResultBounds resultBounds = new ResultBounds(3, 5); // 获取查询结果 List userList = session.selectList("test.user.selectUser", null, resultBounds); // 获取记录总数 long total = resultBounds.getTotal(session); ``` 对 Mapper 接口分页 ``` // 获取 SqlSession 对象 SqlSession session = ... // 从第 4 条开始,取 5 条记录 ResultBounds resultBounds = new ResultBounds(3, 5); // 获取查询结果 // 注意:目前的实现,resultBounds 会对 apply 方法内的所有查询都有效 List userList = resultBounds.apply(()->{ return session.getMapper(UserMapper.class).getUserList(); }); // 获取记录总数 long total = resultBounds.getTotal(session); ``` ### 若使用了 mybatis-spring-xxxx.jar 包整合了 Spring ### 在 MyBatis 配置文件中加上该插件的 Spring 版本 ``` ... ... ``` 在 Spring 配置文件中加上这个 ``` ... ... ``` 使用该插件的 Spring 版本后 ``` ... // 获取记录总数 // 调用 ResultBounds.getTotal 方法的时候不需要给 SqlSession 参数了 long total = resultBounds.getTotal(null); ... ``` ### 说明该插件各个类是干嘛用的 ### ``` ---- bounds |---- ApplyScore ResultBounds.apply 有用到这个接口 |---- ResultBounds 继承 RowBounds 类并加了些有用的方法 |---- TotalCountBounds 用于统计记录总数 ---- dialect |---- Dialect 生成分页语句、统计记录总数语句的接口 |---- MySqlDialect Dialect 接口的 MySql 实现 ---- spring |---- TotalCountBoundsBean |---- TotalCountBoundsBeanInterceptor 这插件的 spring 版本 ---- utility |---- MappedStatementModifier 提供改造 MappedStatement 对象的方法 |---- TemporarySqlSource ---- AbstractPaginationInterceptor ---- PaginationInterceptor 分页的主逻辑在这个类里 ```