Mybatis-plus 3.4版本 分页插件配置 设置单次查询最大记录数及突破最大限制查询

Mybatis-plus 3.4版本 分页插件配置 设置单次查询最大记录数及突破最大限制查询

Mybatis-plus 3.3及之前版本的分页插件和突破查询记录数最大限制的方法已在上一篇文章中介绍,链接地址:https://blog.csdn.net/donotshow/article/details/116272977。最近更新了mybatis-plus的版本到3.4.2,发现插件拦截器发生了很大变化,之前的分页拦截器已被弃用,单次查询最大记录数的限制方式也被修改,这边自己记录下版本之间的差别。

之前版本的拦截器被弃用:
Mybatis-plus 3.4版本 分页插件配置 设置单次查询最大记录数及突破最大限制查询_第1张图片
现在所有的插件都需要放入Interceptor的实现类MybatisPlusInterceptor中:

@Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
     
        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
        paginationInterceptor.setMaxLimit(500L);//设置默认单次查询最大记录数
        paginationInterceptor.setDbType(DbType.MYSQL);//设置数据库类型
        paginationInterceptor.setOverflow(false);//设置超过总页数后是否返回最后一页数据
        mybatisPlusInterceptor.addInnerInterceptor(paginationInterceptor);//将插件放入MybatisPlusInterceptor中才能生效
        return mybatisPlusInterceptor;
    }

以上是Mybatis-plus3.4之后的插件配置方式。

同时3.4版本之后想要突破查询最大记录数的限制也更加方便,只需要在Page信息中设置maxLimit的值就可了:

      Page<WorkQueryListResp> page = new Page<>(pageNum, 1000);
      page.setMaxLimit(1000L);

可以在源码中查看到maxLimit的作用,默认使用Page信息中的maxLimit的值来作为size:

/**
     * 处理超出分页条数限制,默认归为限制数
     *
     * @param page IPage
     */
    protected void handlerLimit(IPage<?> page) {
     
        final long size = page.getSize();
        Long pageMaxLimit = page.maxLimit();
        Long limit = pageMaxLimit != null ? pageMaxLimit : maxLimit;
        if (limit != null && limit > 0 && size > limit) {
     
            page.setSize(limit);
        }
    }

以上,记录下升级Mybatis-plus版本之后遇到的一些问题,后续有新的差别会陆续更新。

你可能感兴趣的:(工具,mybatis,mysql,java)