PageHelper.startPage分页的使用和pageSize的值和list相同导致循环出来的total总数不对

 /**CommonQo 是我自己定义的一个类 来存放pageNum和PageSize**/@Overridepublic PageInfo<FleetData> selectMarkAndSelfIdOne(CommonQo commonQo) {PageHelper.startPage(commonQo.getPageNum(),commonQo.getPageSize());List<FleetData> fleetData = fleetDataMapper.selectMarkAndSelfIdOne();//debug断点PageInfo<FleetData> pageInfo = new PageInfo<>(fleetData);List<FleetData> fleetDataList = new ArrayList<>();System.out.println(fleetData.size());//for循环就循环5for (FleetData fleetData2: fleetData) {Long userId= fleetData2.getId();//获得用户id//System.out.println("用户id======="+ userId );List<FleetBill> fleetBills = fleetBillMapper.selectBySelfId(userId);if (fleetBills.size()>0){for (FleetBill fleet:fleetBills) {Long userId1= fleet.getFleetId();//获得用户id//System.out.println("客户id======="+ userId1);}}else {fleetDataList.add(fleetData2);}}
//        PageInfo<FleetData> page= new PageInfo<>(fleetDataList);
//        BeanUtils.copyProperties(pageInfo,page);pageInfo.setList(fleetDataList);return pageInfo;}

1.PageHelper 是一个分页插件。需要传入参数,pageNum,pageSize如果你传入的参数分别是10,5,表示第10页,每页5条数据。那么 fleetDataMapper.selectMarkAndSelfIdOne();的sql 末尾会默认加上limit 50,5,也就是查询结果最多返回5条数据。

//未分页
select * from marker
//分页后
select * from marker limit 50,5

2.那么问题就来了
我需要的是把所有的东西查出来之后进行for循环处理把我需要的数据存放到一个新的list集合里然后再去分页


PageHelper.startPage(commonQo.getPageNum(),commonQo.getPageSize());List<FleetData> fleetData = fleetDataMapper.selectMarkAndSelfIdOne();

应为PageHelper.startPage是直接操作数据库的,所以他在这里提前做了分页 如果pageSize是5 那么他就会直接去数据库查5条数据 然后返回给你 最后导致for循环的次数不对 然后影响下边的数据处理 导致最后返回的数据total总数不对

3.解决方法
定义一个list分页工具
等所有的东西处理完之后直接对list做分页

/*** 自定义List分页工具* @author hanwl*/
public class PageUtil {//页数private Integer lastPage;//一共有多少条数据private Integer count;//页码private Integer pageNum;//每页多少条数据private Integer pageSize;public Integer getLastPage() {return lastPage;}public void setLastPage(Integer lastPage) {this.lastPage = lastPage;}public Integer getCount() {return count;}public void setCount(Integer count) {this.count = count;}public Integer getPageNum() {return pageNum;}public void setPageNum(Integer pageNum) {this.pageNum = pageNum;}public Integer getPageSize() {return pageSize;}public void setPageSize(Integer pageSize) {this.pageSize = pageSize;}/*** 开始分页* @param list* @param pageNum 页码* @param pageSize 每页多少条数据* @return*/public  List startPage(List list, Integer pageNum,Integer pageSize) {if (list == null) {return null;}if (list.size() == 0) {return null;}count = list.size(); // 记录总数lastPage = 0; // 页数if (count % pageSize == 0) {lastPage = count / pageSize;} else {lastPage = count / pageSize + 1;}int fromIndex = 0; // 开始索引int toIndex = 0; // 结束索引if (pageNum != lastPage) {fromIndex = (pageNum - 1) * pageSize;toIndex = fromIndex + pageSize;} else {fromIndex = (pageNum - 1) * pageSize;toIndex = count;}this.pageNum = pageNum;this.pageSize = pageSize;List pageList = list.subList(fromIndex, toIndex);return pageList;}
}

4.直接调用就可以了

总结:
分页是用于解决数据库数量巨大时减轻数据的读取速度 请结合自己需求使用

PageHelper.startPage分页的使用和pageSize的值和list相同导致循环出来的total总数不对相关推荐

  1. 在oracle中使用 PageHelper.startPage()分页遇到的问题

    问题所在 在本人去使用的时候,一直出现sql语句错误,具体错误如下: PageHelper.startPage()会拦截你最近的下一条方法,并且给你拼接一段sql,在这里给我拼接了Limit,但是在o ...

  2. PageHelper处理分页问题,total总数不对

    当我们用插件解决分页问题时,会出现total数量==当前页显示的数据条数 1.在pom.xml中引入对应插件 <dependency><groupId>com.github.p ...

  3. 使用PageHelper.startPage()分页无效问题之一

    刚开始一直找到底是哪里导致分页无效,找了好久,网上说是依赖没引好,或者是Springboot版本对应问题,后来发现是自动导包到错了 import com.baomidou.mybatisplus.pl ...

  4. PageHelper.startPage(pageNum, pageSize)相关问题(遇到问题解决后持续更新)

    1. PageHelper.startPage(pageNum, pageSize)放在查询sql的前面就对该查询结果有效. 2.分页查出所有的结果,或者分页只查出pageSize的条数,total总 ...

  5. Spring boot PageHelper.startPage(pageIndex, pageSize)分页无效

    突然项目中的分页不起作用了,后台代码: 1.PageHelper.startPage(pageIndex, pageSize)要放在要分页的上面,也没错 后来一想,是springboot做了升级.然后 ...

  6. PageHelper.startPage(pageNum, pageSize)不起作用,我遇到的问题原因:版本不正确

    1.pom.xml 引入maven依赖,这里引入的是pagehelper starter依赖,并不是单纯的pagehelper库: <dependency><groupId>c ...

  7. mybatis,引入pageHelper,参数中有pageNum和pageSize,且都不为空,会分页

    mybatis,引入pageHelper,参数中有pageNum和pageSize,且都不为空,会分页. pageHelper会动态代理mybatis,里面会判断参数中有pageNum和pageSiz ...

  8. mybatis pagehelper实现分页

    jar包的版本一定要对应,不然会出现一系列的问题 下载jar包 <properties>           <!-- spring版本号 -->           < ...

  9. SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页

    乐哉码农 上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进入正题吧! 1.首先引入我们需 ...

  10. Spring + Mybatis 使用 PageHelper 插件分页

    转载:http://blog.csdn.net/joker_zhou/article/details/50418005 先增加maven依赖: [html] view plaincopy print? ...

最新文章

  1. 某华为程序员爆料:主动离职,公司竟也给n+1,到手15万,华为真良心!
  2. 输入两个整数a和b,计算a+b的和
  3. 边框回归的损失函数_一文搞懂常用的七种损失函数
  4. PHP面试题:实现中文字串截取无乱码的方法
  5. Hibernate5-多对1(n:1)-fetch=join
  6. Spring MVC:MySQL和Hibernate的安全性
  7. uft自动化测试工具安装步骤_自动化测试灵魂三问:是什么、为什么和做什么
  8. Python-JS (JS介绍~JS的基础数据类型)
  9. 车机没有carlife可以自己下载吗_长安CS55自带百度CarLife使用方法
  10. Prometheus 监控 nginx
  11. 45. Element isDefaultNamespace() 方法
  12. Python设计模式:外观模式
  13. 在shell中向应用程序的socket发送信息
  14. SpringBoot 入门
  15. 别找了,这就是你想要的年会抽奖开源项目
  16. 教你制作启动U盘,用U盘装系统(转载)
  17. 聚类算法(4)--Hierarchical clustering层次聚类
  18. 深度学习基础之-2.3简单的神经网络(单个输入/多个输入)做线性回归+特征值归一化
  19. Week2 Assignment - Princeton-Algorithms-PartI
  20. kindle paperwhite 使用体验

热门文章

  1. Go (Golang) 语言-快速开始
  2. php视图编辑,word中最适合查看编辑排版效果的视图是什么
  3. 传输层协议介绍(深入学习)
  4. 矩阵分析与应用 -- 线性方程组
  5. 还不会用 Python 提取 PDF 表格?三种类型数据,轻松转换成 Excel
  6. 论文中参考文献规范格式
  7. win7计算机图标排列,win7系统每次开机桌面图标都会重新排列的方法
  8. mac关闭虚拟内存_为什么不应该关闭Mac上的虚拟内存
  9. 用auto.js写一个自动刷快手抖音视频的小玩意
  10. PS小技巧----证件照换底色