mybatis-plus分页只需两步:引入mybatis-plus-boot-starter依赖并配置mybatisplusinterceptor添加paginationinnerinterceptor,自动实现count与limit分页,无需修改sql。

MyBatis-Plus 自带的分页插件配置非常简洁,核心就两步:加依赖 + 注册拦截器。只要配对了,所有 BaseMapper.selectPage() 和 IService.page() 调用都会自动生效,无需改 SQL、不用手写 count。
确认已引入正确依赖
确保项目中已添加 `mybatis-plus-boot-starter`(3.5.x 及以上版本),它已内置分页能力,**不需要额外引入 `mybatis-plus-extension` 或旧版 `PaginationInterceptor`**:<dependency><groupid>com.baomidou</groupid><artifactid>mybatis-plus-boot-starter</artifactid><version>3.5.7</version></dependency>
编写配置类注册 PaginationInnerInterceptor
在 Spring Boot 项目中新建一个 `@Configuration` 类(如 `MybatisPlusConfig`),注册 `MybatisPlusInterceptor` 并添加 `PaginationInnerInterceptor`:@Configuration
@MapperScan("com.example.mapper") // 替换为你的 Mapper 包路径
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 必须指定数据库类型,否则可能无法识别分页语法
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
注意:DbType.MYSQL 需按实际数据库替换,例如 Oracle 用 DbType.ORACLE,PostgreSQL 用 DbType.POSTGRE_SQL。多数据源场景建议显式指定,避免自动推断失败。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
可选:调整分页行为参数
`PaginationInnerInterceptor` 支持常见定制,比如限制单页最大条数、开启溢出处理:PaginationInnerInterceptor pagination = new PaginationInnerInterceptor(DbType.MYSQL); pagination.setMaxLimit(500L); // 单页最多查 500 条,防恶意 limit 1,9999999 pagination.setOverflow(true); // 当前页 > 总页数时,自动返回第一页(默认 false,返回空) interceptor.addInnerInterceptor(pagination);
验证是否生效
写个简单测试,调用 `selectPage` 后观察日志或 SQL:Page<user> page = new Page(1, 5);
IPage<user> result = userMapper.selectPage(page, null);
System.out.println("总数:" + result.getTotal()); // 会自动执行 count 查询
System.out.println("数据:" + result.getRecords());</user></user>
如果看到类似 SELECT COUNT(*) FROM user 和 SELECT * FROM user LIMIT 5 两条 SQL 输出,说明插件已正常工作。
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










