手动分页解决一对多查询使用PAGEHELPER分页插件查询总条数不对
Posted fivepointone
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手动分页解决一对多查询使用PAGEHELPER分页插件查询总条数不对相关的知识,希望对你有一定的参考价值。
工具类
package com.gcs.util; import java.util.ArrayList; import java.util.List; public class PageUtil { /** * 手动分页类 * @param datas * @param pageSize * @param pageNo * @param <T> * @return */ public static <T> List<T> getPageSizeDataForRelations(List<T> datas, int pageSize, int pageNo){ int startNum = (pageNo-1)* pageSize+1 ; //起始截取数据位置 if(startNum > datas.size()){ return null; } List<T> res = new ArrayList<>(); int rum = datas.size() - startNum; if(rum < 0){ return null; } if(rum == 0){ //说明正好是最后一个了 int index = datas.size() -1; res.add(datas.get(index)); return res; } if(rum / pageSize >= 1){ //剩下的数据还够1页,返回整页的数据 for(int i=startNum;i<startNum + pageSize;i++){ //截取从startNum开始的数据 res.add(datas.get(i-1)); } return res; }else if((rum / pageSize == 0) && rum > 0){ //不够一页,直接返回剩下数据 for(int j = startNum ;j<=datas.size();j++){ res.add(datas.get(j-1)); } return res; }else{ return null; } } }
使用
//获取结果集 List<Instructions> list = service.getInstList(userId, taskId, type, status, instName, condition); //使用工具类得到分页后的结果集 List<Instructions> data = PageUtil.getPageSizeDataForRelations(list, pageSize, pageIndex); Map<String,Object> map = new HashMap<>(); int size = list.size();//总条数 //总页数 int totlePage = size/pageSize;//取整 int i = size % pageSize;//取余 if(i > 0){ totlePage+=1; } map.put("data",data);//结果集 map.put("pages",totlePage);//总页数 map.put("pageNum",pageIndex);//页码 map.put("pageSize",pageSize);//每页显示条数 map.put("total",size);//总条数 return Result.success(map);
以上是关于手动分页解决一对多查询使用PAGEHELPER分页插件查询总条数不对的主要内容,如果未能解决你的问题,请参考以下文章