# mybatis-pagination **Repository Path**: itlangz/mybatis-pagination ## Basic Information - **Project Name**: mybatis-pagination - **Description**: MyBatis 分页插件 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: http://www.itlangzi.com - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 0 - **Created**: 2019-07-15 - **Last Updated**: 2025-05-23 ## Categories & Tags **Categories**: database-dev **Tags**: None ## README # MyBatis-pagination 介绍 `Mybatis` 是一个优秀的 `ORM` 框架,平时使用的也很广泛;但它并没有提供分页的功能,好在它提供了插件的机制,允许开发者自定义处理,这样我们就可以实现一个通用的分页插件。 ## 基本功能 1. 在 `Mapper` 查询方法中任意参数传入 `com.itlangzi.mybatis.page.Pagination` 对象,并正确设置 `page` 和 `size` 即可认定是分页查询 2. 支持 `MySQL/Mariadb`,`Oracle`,`SQL Server 2012` 分页 3. 自动判断分页方言,无需配置, 多数据源切换后依然能正确识别分页方言 4. 支持直接返回 `com.itlangzi.mybatis.page.Pagination` 对象 5. 支持和 `Spring Boot`、普通使用 `MyBatis` 项目集成 ## 集成说明 需要在 `pom.xml` 中添加依赖 ```xml org.mybatis.spring.boot mybatis-spring-boot-autoconfigure 1.3.2 org.mybatis mybatis-spring 1.3.2 ``` ### 1. 普通项目集成 **在 `MyBatis-config.xml` 配置文件中添加如下配置** ```xml ``` ### 2. `Spring Boot 集成` 需要添加依赖 **2.1 编码式集成** ```java @org.springframework.context.annotation.Configuration public 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 ``` 2.2.2 `application.yml` 添加配置 ```yml mybatis: config-location: classpath*:mybatis/mybatis-config.xml ``` ## 使用示例 `DemoMapper.xml` ```xml ``` `DemoMapper.java` ```java class DemoMapper{ Pagination findByPage(Demo demo, Pagination page); } ``` ## 注意事项 1. 若使用分页,返回对象可以直接使用 `List` 接收,但建议返回 `Pagination`, 程序中会有额外的处理;直接返回 `List` 有内存溢出的风险;若执意要返回 `List`, 可以在拦截器或过滤器的后置处理中添加代码 `PaginationHelper.clear()`;可有效防止该情况发生 2. 若 `page` 和 `size` 字段值设置不合法(一般 `page` 大于等于 `0`, `size` 大于 `0`), 将不会进行分页处理 3. 该项目除 `mybatis` 依赖外,还额外依赖 `druid` 用于`SQL` 语句的处理、`slf4j-api` 用于日志打印;若项目中已经有此依赖可在依赖中排除