目录
一、分页插件
1、分页操作
当我们进行分页查询数据时:
/**
* 分页查询数据
* @param pageNum 页码
* @param pageSize 每页数量
* @return 分页数据
*/
public Page<User> selectPage(Integer pageNum, Integer pageSize) {
return userMapper.selectPage(new Page<>(pageNum, pageSize), new QueryWrapper<>());
}
尽管按照参数要求提供了 Page 参数并指定了页码和每页条数,但 Mybatis 并不会对结果进行分页,其原因是缺少了分页插件。因此,想要分页生效的话,就需要提供分页插件。
2、添加分页插件
1)3.4 版本之前
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
// 分页插件拦截器
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求页数大于最大页时的操作:true 调回到首页,false 继续请求,默认为 false
paginationInterceptor.setOverflow(false);
// 设置单页的限制数量,-1 表示不限制
paginationInterceptor.setLimit(500L);
return paginationInterceptor;
}
}
2)3.4 版本以后
在 Mybatis-plus 3.4 版本以后, PaginationInterceptor 就过时,官方推荐使用 MybatisPlusInterceptor:
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 分页拦截器
PaginationInnerInterceptor innerInterceptor = new PaginationInnerInterceptor();
// 设置请求页数大于最大页时的操作:true 调回到首页,false 继续请求,默认为 false
innerInterceptor.setOverflow(false);
// 设置单页的限制数量,-1 表示不限制
innerInterceptor.setMaxLimit(500L);
interceptor.addInnerInterceptor(innerInterceptor);
return interceptor;
}
}
通过 MybatisPlusInterceptor 对象的 addInnerInterceptor() 方法可以添加各种分页插件拦截器,而分页拦截器需要实现 InnerInterceptor 接口,并且官方提供了一个实现了该接口的类 PaginationInnerInterceptor,这个类相比以前的 PaginationInterceptor 功能更加完善。