Mybatis Plus分页插件的原理主要有以下3部分:
1. 实现Interceptor
分页插件实现了Mybatis的Interceptor接口:
public class PaginationInterceptor implements Interceptor {
public Object intercept(Invocation ivk) {
// 具体分页逻辑
return ivk.proceed(); // 执行原始SQL
}
}
在 intercept()方法中:
- 获取分页参数
- 根据数据库类型生成分页SQL
- 执行原始SQL
- 返回结果
2. 注册Plugin
将分页插件注册到Mybatis Plus配置中:
<plugins>
<plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
<property name="dialectType" value="mysql"/>
</plugin>
</plugins>
3. 使用Page对象
Page<User> page = new Page<>(1, 10);
userMapper.selectPage(page, null);
selectPage()方法中:
- 获取Page对象中的页码和大小
- 生成Limit分页SQL
- 执行SQL
- 返回分页结果
通过这些步骤:
- 实现Mybatis的Interceptor插件
- 注册Plugin
- 使用Page对象
Mybatis Plus的分页插件才得以生效。原理很简单,就是在SQL执行前后,插入分页逻辑。