本周,做项目的时候遇到了一个问题,使用的mybatis plus进行的分页,传入的页数如果大于实际总页数,返回的列表是第一页的数据(我们想要返回的是空列表),最后发现是mybatis plus的配置出现的问题。
原来的配置代码如下:
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor innerInterceptor=new PaginationInnerInterceptor();
innerInterceptor.setDbType(DbType.MYSQL);
//问题就是出现在了这里 设置溢出总页数后是否进行处理
innerInterceptor.setOverflow(true);
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
interceptor.addInnerInterceptor(innerInterceptor);
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer(){
return mybatisConfiguration -> mybatisConfiguration.setUseGeneratedShortKey(false);
}
}
把配置改为innerInterceptor.setOverflow(false),问题解决。
后来查询文档PaginationInnerInterceptor有如下几个常用的配置,记录一下:
属性名 | 类型 | 默认值 | 描述 |
---|---|---|---|
overflow | boolean | false | 溢出的页数是否进行默认处理(默认不处理) |
maxLimit | boolean | false | 单页分页条数限制(默认无限制) |
dbType | DbType | 数据库类型(根据类型获取应使用的分页方言 |
建议单一数据库类型的均设置 dbType