Mybatis-Plus分页插件配置
...大约 1 分钟Mybatis-Plus脚手架
@Configuration
@MapperScan("com.xuecheng.content.mapper")
public class MybatisPlusConfig {
/**
* 新的分页插件
* 需要设置 MybatisConfiguration#useDeprecatedExecutor = false
* 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
作用
- 自动扫描 Mapper 接口
@MapperScan
可以指定一个或多个包路径,Spring 会自动扫描这些包下的 Mapper 接口,并将它们注册为 Bean。 - 简化配置 如果没有
@MapperScan
,你需要为每个 Mapper 接口添加@Mapper
注解。而使用@MapperScan
后,可以一次性扫描整个包,避免手动为每个 Mapper 接口添加注解。 - 与 Spring 集成 从而可以在 Service 层或其他组件中通过
@Autowired
注入使用。
分页插件的原理是什么
MyBatis-Plus 的分页插件基于 MyBatis 的 Interceptor
(拦截器)实现。它会拦截 sql语句,根据分页参数(如 page
和 size
)对原始 SQL 进行改造,比如在 MySQL 中,会在 SQL 后面追加 LIMIT
和 OFFSET
为了实现分页功能,插件会自动生成一条统计总记录数的 SQL(SELECT COUNT(*) ...
)
查询完成后,分页插件会将数据封装到 IPage
接口的实现类中(如 Page
对象),方便开发者直接使用。
自动生成的 SQL
在执行 selectPage
时,分页插件会改造 SQL:
统计总记录数:
SELECT COUNT(*) FROM user;
分页查询:
SELECT id, name, age FROM user LIMIT 2 OFFSET 2;