概述
我的mybatis-plus
版本是3.5.2
.
在mybatisPlus
有自带的分页查询接口,在BaseMapper
中就可以看到2个自带Page
参数的方法。
分页查询原理
该分页需要依赖分页拦截器com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor
注册到spring
容器里,并添加到sql
拦截执行器中.
在执行com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor
时会按照责任链一样依次执行其内部属性interceptors
中的拦截器的方法。
PaginationInnerInterceptor
就是其中分页查询拦截器
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
分页时查询所有数据
通常业务中列表都是分页查询接口,但是有时候又需要查询所有数据。此时重新写一个相同查询条件的接口肯定是不合适的。
一般获取Page
对象的方法都是com.baomidou.mybatisplus.extension.plugins.pagination.Page#of(long, long)
在构造参数中的maxLimit
是null
,此时只需要把pageNum
值填充小于0即可。
为什么pageNum
填充小于就可以了呢,都在源码里
com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor#beforeQuery