开源软件名称:mybatis-pagination
开源软件地址:https://gitee.com/itlangz/mybatis-pagination
开源软件介绍:
MyBatis-pagination 介绍Mybatis 是一个优秀的 ORM 框架,平时使用的也很广泛;但它并没有提供分页的功能,好在它提供了插件的机制,允许开发者自定义处理,这样我们就可以实现一个通用的分页插件。
基本功能- 在
Mapper 查询方法中任意参数传入 com.itlangzi.mybatis.page.Pagination 对象,并正确设置 page 和 size 即可认定是分页查询 - 支持
MySQL/Mariadb ,Oracle ,SQL Server 2012 分页 - 自动判断分页方言,无需配置, 多数据源切换后依然能正确识别分页方言
- 支持直接返回
com.itlangzi.mybatis.page.Pagination 对象 - 支持和
Spring Boot 、普通使用 MyBatis 项目集成
集成说明需要在 pom.xml 中添加依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-autoconfigure</artifactId> <version>1.3.2</version></dependency><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version></dependency> 1. 普通项目集成在 MyBatis-config.xml 配置文件中添加如下配置 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- .... --> <!-- 分页工厂--> <objectFactory type="com.itlangzi.mybatis.factory.PaginationFactory"></objectFactory> <!--分页返回对象包装工厂--> <objectWrapperFactory type="com.itlangzi.mybatis.factory.PaginationWrapperFactory"/> <plugins> <!--分页插件--> <plugin interceptor="com.itlangzi.mybatis.interceptors.PaginationInterceptor"></plugin> </plugins> <!-- .... --></configuration> 2. Spring Boot 集成 需要添加依赖2.1 编码式集成 @org.springframework.context.annotation.Configurationpublic class MyBatisConfiguration implements ConfigurationCustomizer { @Override public void customize(Configuration configuration) { // 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn // 的类似映射。默认false configuration.setMapUnderscoreToCamelCase(true); configuration.setLogPrefix("MyBatis-"); // 设置分页工厂 configuration.addInterceptor(registryPaginationInterceptor()); configuration.setCacheEnabled(true); // 设置自定义的分页包装类工厂 configuration.setObjectWrapperFactory(new PaginationWrapperFactory()); // 设置分页工厂 configuration.setObjectFactory(new PaginationFactory()); } public Interceptor registryPaginationInterceptor() { return new PaginationInterceptor(); }} 2.2 配置式集成 2.2.1 MyBatis-config.xml 中添加如下配置 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- .... --> <!-- 分页工厂--> <objectFactory type="com.itlangzi.mybatis.factory.PaginationFactory"></objectFactory> <!--分页返回对象包装工厂--> <objectWrapperFactory type="com.itlangzi.mybatis.factory.PaginationWrapperFactory"/> <plugins> <!--分页插件--> <plugin interceptor="com.itlangzi.mybatis.interceptors.PaginationInterceptor"></plugin> </plugins> <!-- .... --></configuration> 2.2.2 application.yml 添加配置 mybatis: config-location: classpath*:mybatis/mybatis-config.xml 使用示例DemoMapper.xml
<select id="findByPage" resultType="com.example.Demo"> select * from t_demo</select> DemoMapper.java
class DemoMapper{ Pagination<Demo> findByPage(Demo demo, Pagination<Demo> page);} 注意事项- 若使用分页,返回对象可以直接使用
List 接收,但建议返回 Pagination , 程序中会有额外的处理;直接返回 List 有内存溢出的风险;若执意要返回 List , 可以在拦截器或过滤器的后置处理中添加代码 PaginationHelper.clear() ;可有效防止该情况发生 - 若
page 和 size 字段值设置不合法(一般 page 大于等于 0 , size 大于 0 ), 将不会进行分页处理 - 该项目除
mybatis 依赖外,还额外依赖 druid 用于SQL 语句的处理、slf4j-api 用于日志打印;若项目中已经有此依赖可在依赖中排除 |
请发表评论