【踩坑专栏】Mybatis plus分页查询查到了全量数据

最近在使用Mybatis plus的时候遇到了一个很奇怪的问题,通过mybatis plus分页查询,但是record这一项却是全量的数据,正常来说record的size应该和在new Page<>(current, size)的时候传进去的size是一样的,那为啥会查出全量的数据呢

代码很简单,大概类似如下

    private List<PersonDO> queryAll() {
        List<PersonDO> total = new ArrayList<>();
        Long current = 1L;
        while (true){
            Page<PersonDO> page = new Page<>(current,PAGE_SIZE);
            personService.page(page);
            total.addAll(page.getRecords());
            //当分页数据为空时,不继续查询
            if (CollectionUtils.isEmpty(page.getRecords())){
                break;
            }
            //下一页页码
            current++;
        }
        return total;
    }

带着疑问搜了一下,发现原来mybatis plus是需要配置的,不配置就直接查出来全量数据。按版本不同,具体配置有不同
我的版本是3.5.1,对于3.5.1的,配置类如下

@Configuration
//扫描mybatis plus 的mapper的包路径
@MapperScan("com.test.mapper")
public class MyInterceptorConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

}

对于3.4.1[1]

@Configuration
@MapperScan("com.test.mapper")
public class MyInterceptorConfig {


      @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;
       }
       }

重启项目后,再次查询,问题解决

参考文档
[1],mybatisplus分页总是查到全部数据?

你可能感兴趣的:(踩坑专栏,mybatis,java,开发语言)