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

Posted donotshow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,发现插件拦截器发生了很大变化,之前的分页拦截器已被弃用,单次查询最大记录数的限制方式也被修改,这边自己记录下版本之间的差别。

之前版本的拦截器被弃用:

现在所有的插件都需要放入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-plus 3.4版本 分页插件配置 设置单次查询最大记录数及突破最大限制查询的主要内容,如果未能解决你的问题,请参考以下文章

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

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

MyBatis-Plus03_分页插件自定义分页

mybatis-plus 分页插件

MyBatis-Plus03_分页插件自定义分页

Mybatis-plus的两种分页插件的配置方式