Mybatisplus 分页查询时,禁止自动统计总数

Posted 猎人在吃肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatisplus 分页查询时,禁止自动统计总数相关的知识,希望对你有一定的参考价值。

1、分页插件

使用 Mybatisplus 时 ,我们使用 PaginationInnerInterceptor 作为分页插件,它会帮助我们进行分页,查询总数。

@Configuration
@MapperScan("com.teest.mapper","com.teest2.mapper")
public class MybatisPlusConfig 

    /**
     * MybatisPlus 的分页插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() 
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //  PaginationInnerInterceptor 分页拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.mysql));
        return interceptor;
    

2、自动统计总数的实现

点击进入 PaginationInnerInterceptor.java 代码中(如下图所示)。

通过仔细调试找到了:

PaginationInnerInterceptor 类中,

 // 执行了SQL查询出总数,并填入到你的查询参数page对象中,供后面的正式查询使用。
willDoQuery()

// 用于构造查询总数的SQL,当遇到问题时,可以到这个方法中寻找错误的原因。
autoCountSql(IPage<?> page, String sql) 

在进入 willDoQuery() 方法时,如果 !page.isSearchCount()==true ,即 page.isSearchCount()=false 时,则不在进行 自动统计总数

3、禁止自动统计总数

当自定义的查询语句比较复杂时,自动获取总数的方法无法满足需要时 ,就需要 自定义查询总数自定义分页查询,实现方法也比较简单。

// 禁止自动获取总数
tPage.setSearchCount(false);

// 自定义统计总数的方法 ,查出总数并填入到 PAGE 对象中
long total = xXXMapper.count(queryWrapper);
tPage.setTotal(total);

// 接下来是自定义分页查询....

转载:https://www.cnblogs.com/splyn/p/16392370.html

以上是关于Mybatisplus 分页查询时,禁止自动统计总数的主要内容,如果未能解决你的问题,请参考以下文章

MybatisPlus 快速构建MybatisPlus 原生mybatis(分页查询) 通用枚举 service 封装 自动填充

第121天学习打卡(MyBatisPlus CRUD扩展之查询操作 分页查询 删除操作 逻辑删除 条件构造器 自动生成器 )

MybatisPlus分页条件查询

mybatis-plus分页查询

PageHelper和MybatisPlus的分页插件冲突

Mybatis-plus之分页泛型转换