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扩展之查询操作 分页查询 删除操作 逻辑删除 条件构造器 自动生成器 )