问题描述
Spring Boot 项目集成 MybatisPlus:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.12</version>
</dependency>
在调用分页相关的 API 时,分页无效:
IPage<User> page = new Page<>(pageNo, pageSize);
IPage<User> pageResult = this.page(page);
这里返回的结果中包含了表中的全部信息,查看 Mybatis 日志也能发现,实际执行的 SQL 语句并没有使用 LIMIT。
查看 MybatisPlus 官网,相关的文档和调用示例都没有发现有什么问题。
问题解决
较新版本的 MybatisPlus 中添加了分页插件的功能,该功能导致的一个后果是,没有启用分页插件的话,相关的分页 API 调用时不会添加 LIMIT 等 SQL 语句。因此这里需要启用 MybatisPlus 的分页插件(即使我们不使用)。
在最近几个版本,分页插件分离为单独依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
<version>3.5.12</version>
</dependency>
在配置类中定义分页插件的 Spring Bean:
public class MyBatisPlusConfig {
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页插件并指定数据库类型(如 MySQL)
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
文章评论