参考官网:分页插件|PaginationInnerInterceptor
1.添加拦截器
@Configuration
@MapperScan("com.example.demo.mapper")
public class MybatisPlusConfig {
// 旧版
// @Bean
// public PaginationInterceptor paginationInterceptor() {
// PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// // paginationInterceptor.setOverflow(false);
// // 大设置最单页限制数量,默认 500 条,-1 不受限制
// // paginationInterceptor.setLimit(500);
// // 开启 count 的 join 优化,只针对部分 left join
// paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
// return paginationInterceptor;
// }
// 最新版
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
// 设置最大单页限制数量,默认不设置
// paginationInnerInterceptor.setMaxLimit(1l);
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInnerInterceptor.setOverflow(true);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
}
2.使用
@Test
public void test1() {
Page<User> page = new Page<>(3, 2);
IPage<User> result = userMapper.selectPage(page, null);
// 获取分页的数据
result.getRecords().forEach(item -> {
System.out.println(item);
}
);
// 获取总页数
System.out.println(result.getTotal());
}