使用PageHelper插件获取数据总条数不对的问题的解决方案

简介: 使用PageHelper插件获取数据总条数不对的问题的解决方案

PageHelper 这个插件用了很多次了,今天使用的时候才发现中间有一个大坑,就是使用这个插件中间只能有一次查询的操作语句,不能再添加其它语句(两行代码之间不能再有其他代码)!

例如,我们一般都是这样进行查询:

//创建一个PageResult对象出来
PageResult<AdvertInfo> pageResult = new PageResult<>();
//开启分页,pageNum代表当前页数,pageSize代表每页总数
PageHelper.startPage(pageNum, pageSize);
//查询数据库的语句,pageHelper在这里做一次拦截器操作
List<AdvertInfo> advertList = advertMapper.getAdvertList(advertInfoParam);
//使用PageInfo包装结果
PageInfo<AdvertInfo> pageInfo = new PageInfo<>(advertList);

上述操作是这样的,但是如果我们需要将查询的List<AdvertInfo>转换成前端展示的 ViewObject 对象,那么我们想当然会在中间做一次操作:

PageHelper.startPage(pageNum, pageSize);
List<AdvertInfo> advertList = advertMapper.getAdvertList(advertInfoParam);
//将AdvertInfo某些字段要隐藏,不在前台展示,所以需要转换成前端需要的bean对象
List<AdvertInfoVO> AdvertInfoList = new ArrayList<>();
for (AdvertInfo info : pageInfo.getList()) {
    res.add(convertAdvertInfoToVO(info));
}
//然后再包装一下前端对象
PageInfo<AdvertInfoVO> pageInfo = new PageInfo<>(AdvertInfoList);

这样获取的pageInfo.getTotal()一直是当前的 pageSize总数,而不是查询的总条数。所以,我们最好不要在 pageHelper 两个语句中间插入其它语句,而是在后面做一些操作:

//分页查询
PageHelper.startPage(pageNum, pageSize);
List<AdvertInfo> advertList = advertMapper.getAdvertList(advertInfoParam);
PageInfo<AdvertInfo> pageInfo = new PageInfo<>(advertList);
//转换成前端VO
List<AdvertInfoVO> advertInfoList = new ArrayList<>();
for (AdvertInfoinfo : pageInfo.getList()) {
    advertInfoList.add(convertAdvertInfoToVO(info));
}
//那么这样就可以正确返回了!
return new LayuiTableResult(0, "查询成功", pageInfo.getTotal(), advertInfoList);;

 


相关文章
|
SQL Java 数据库连接
【mybatis】第一篇,Springboot中使用插件PageHelper不生效解决方案
【mybatis】第一篇,Springboot中使用插件PageHelper不生效解决方案
|
Arthas 监控 Java
Arthas (阿尔萨斯)arthas-boot 方式安装及使用教程
Arthas (阿尔萨斯)arthas-boot 方式安装及使用教程
3649 0
|
JSON 前端开发 Java
SpringBoot中Date格式化处理
日期格式化处理:从混乱到清晰,轻松转换日期格式
1123 1
|
存储 SQL 开发框架
SpringCloud微服务实战——搭建企业级开发框架(二十七):集成多数据源+Seata分布式事务+读写分离+分库分表
读写分离:为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器;第二台数据库服务器,主要进行读的操作。   目前有多种方式实现读写分离,一种是Mycat这种数据库中间件,需要单独部署服务,通过配置来实现读写分离,不侵入到业务代码中;还有一种是dynamic-datasource/shardingsphere-jdbc这种,需要在业务代码引入jar包进行开发。
1727 26
SpringCloud微服务实战——搭建企业级开发框架(二十七):集成多数据源+Seata分布式事务+读写分离+分库分表
|
存储 缓存 关系型数据库
MySQL的count()方法慢
MySQL的 `COUNT()`方法在处理大数据量时可能会变慢,主要原因包括数据量大、缺乏合适的索引、InnoDB引擎的设计以及复杂的查询条件。通过创建合适的索引、使用覆盖索引、缓存机制、分区表和预计算等优化方案,可以显著提高 `COUNT()`方法的执行效率,确保数据库查询性能的提升。
2100 12
|
存储 安全 Windows
U盘无法访问怎么解决?7个U盘修复方法
​U盘很常见也很常用,平时在存储文件和传输数据的时候使用频率非常高。经常使用U盘的用户可能对U盘无法访问的情况比较熟悉了。U盘出现打不开无法访问数据的问题时不仅会影响我们的工作和学习效率,最致命的是还会导致重要数据的丢失。所以,U盘无法访问是什么原因引起的呢?遇到这个问题的时候怎么处理才稳妥呢?今天就和大家一起了解一下U盘无法访问的原因和应对的方法,帮助大家轻松摆脱困扰。
|
SQL 监控 Java
IDEA插件-Mybatis Log Free日志替换
MyBatis Log Free 是一个免费的用于在 IntelliJ IDEA 中显示 MyBatis 日志的插件。它可以帮助您更方便地查看和分析 MyBatis 的 SQL 执行情况,以及定位潜在的性能问题,提高开发效率。
3652 0
IDEA插件-Mybatis Log Free日志替换
|
缓存 fastjson Java
FastJson - JSONPath 使用
FastJson - JSONPath 使用
2250 0
|
存储 监控 算法
XXL-JOB内部机制大揭秘:让任务调度飞起来
【8月更文挑战第14天】在大数据时代,高效的任务调度系统是支撑业务稳定运行与快速迭代的基石。XXL-JOB,作为一款轻量级、分布式任务调度平台,凭借其灵活的配置、强大的扩展性和高可用特性,在众多任务调度框架中脱颖而出。今天,我们就来深入揭秘XXL-JOB的内部机制,看看它是如何让任务调度“飞起来”的。
1273 0
|
Java 数据库连接 mybatis
idea无法下载Mybatis插件怎么办
idea无法下载Mybatis插件怎么办

热门文章

最新文章