PageHelper.startPage分页的使用和pageSize的值和list相同导致循环出来的total总数不对
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总数不对相关推荐
- 在oracle中使用 PageHelper.startPage()分页遇到的问题
问题所在 在本人去使用的时候,一直出现sql语句错误,具体错误如下: PageHelper.startPage()会拦截你最近的下一条方法,并且给你拼接一段sql,在这里给我拼接了Limit,但是在o ...
- PageHelper处理分页问题,total总数不对
当我们用插件解决分页问题时,会出现total数量==当前页显示的数据条数 1.在pom.xml中引入对应插件 <dependency><groupId>com.github.p ...
- 使用PageHelper.startPage()分页无效问题之一
刚开始一直找到底是哪里导致分页无效,找了好久,网上说是依赖没引好,或者是Springboot版本对应问题,后来发现是自动导包到错了 import com.baomidou.mybatisplus.pl ...
- PageHelper.startPage(pageNum, pageSize)相关问题(遇到问题解决后持续更新)
1. PageHelper.startPage(pageNum, pageSize)放在查询sql的前面就对该查询结果有效. 2.分页查出所有的结果,或者分页只查出pageSize的条数,total总 ...
- Spring boot PageHelper.startPage(pageIndex, pageSize)分页无效
突然项目中的分页不起作用了,后台代码: 1.PageHelper.startPage(pageIndex, pageSize)要放在要分页的上面,也没错 后来一想,是springboot做了升级.然后 ...
- PageHelper.startPage(pageNum, pageSize)不起作用,我遇到的问题原因:版本不正确
1.pom.xml 引入maven依赖,这里引入的是pagehelper starter依赖,并不是单纯的pagehelper库: <dependency><groupId>c ...
- mybatis,引入pageHelper,参数中有pageNum和pageSize,且都不为空,会分页
mybatis,引入pageHelper,参数中有pageNum和pageSize,且都不为空,会分页. pageHelper会动态代理mybatis,里面会判断参数中有pageNum和pageSiz ...
- mybatis pagehelper实现分页
jar包的版本一定要对应,不然会出现一系列的问题 下载jar包 <properties> <!-- spring版本号 --> < ...
- SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页
乐哉码农 上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进入正题吧! 1.首先引入我们需 ...
- Spring + Mybatis 使用 PageHelper 插件分页
转载:http://blog.csdn.net/joker_zhou/article/details/50418005 先增加maven依赖: [html] view plaincopy print? ...
最新文章
- 某华为程序员爆料:主动离职,公司竟也给n+1,到手15万,华为真良心!
- 输入两个整数a和b,计算a+b的和
- 边框回归的损失函数_一文搞懂常用的七种损失函数
- PHP面试题:实现中文字串截取无乱码的方法
- Hibernate5-多对1(n:1)-fetch=join
- Spring MVC:MySQL和Hibernate的安全性
- uft自动化测试工具安装步骤_自动化测试灵魂三问:是什么、为什么和做什么
- Python-JS (JS介绍~JS的基础数据类型)
- 车机没有carlife可以自己下载吗_长安CS55自带百度CarLife使用方法
- Prometheus 监控 nginx
- 45. Element isDefaultNamespace() 方法
- Python设计模式:外观模式
- 在shell中向应用程序的socket发送信息
- SpringBoot 入门
- 别找了,这就是你想要的年会抽奖开源项目
- 教你制作启动U盘,用U盘装系统(转载)
- 聚类算法(4)--Hierarchical clustering层次聚类
- 深度学习基础之-2.3简单的神经网络(单个输入/多个输入)做线性回归+特征值归一化
- Week2 Assignment - Princeton-Algorithms-PartI
- kindle paperwhite 使用体验