官网教程 https://baomidou.com/plugins/pagination/
1、首先确认依赖安装OK
javascript
implementation 'com.baomidou:mybatis-plus-spring-boot3-starter:3.5.10'
implementation 'com.baomidou:mybatis-plus-generator:3.5.10'
implementation 'com.baomidou:mybatis-plus-jsqlparser:3.5.10'
implementation 'com.baomidou:mybatis-plus-extension:3.5.10'
2、增加配置
javascript
@Configuration
@MapperScan("scan.your.mapper.package")
public class MybatisPlusConfig {
/**
* 添加分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
// 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
return interceptor;
}
}
3、MyBatis-Plus 分页实现原理
拦截器机制:
- MyBatis-Plus 使用拦截器来拦截 SQL 语句的执行。
- 通过 MybatisPlusInterceptor 和 PaginationInnerInterceptor,在执行 SQL 之前对其进行修改。
SQL 重写:
- 在原始 SQL 语句的基础上,添加分页相关的 SQL 片段。
- 例如,对于 MySQL 数据库,分页 SQL 通常会在原始查询后添加 LIMIT 和 OFFSET。
分页参数处理:
分页参数(如当前页码和每页大小)通过 Page 对象传递。
Page 对象包含分页信息,并在拦截器中用于计算 LIMIT 和 OFFSET。
执行流程:
- 请求: 接收到分页请求,包含页码和每页大小。
- 分页参数封装: 使用 Page 对象封装分页参数。
- SQL 拦截: 拦截器拦截 SQL 语句。
- COUNT 查询: 生成并执行 COUNT 查询以获取总记录数。
- 分页查询: 生成并执行分页查询以获取当前页数据。
- 结果组装: 将总记录数和当前页数据组装成 IPage 对象返回。
返回结果:
返回的 IPage 对象包含分页数据、总记录数、当前页码、每页大小等信息。