原 PageHelper分页后对list进行操作,然后放到一个新的list里面导致分页失效
版权声明:本文为博主原创文章,请尊重他人的劳动成果,转载请附上原文出处链接和本声明。
本文链接:https://www.91mszl.com/zhangwuji/article/details/1301
我的业务需求是需要用PageHelper分页,然后对分页的list进行操作,然后放到一个新的list里面,这样会导致
二:之前的代码(错误)
public ReturnMsgUtils selectCheckData(Map<String, Object> params) {
int pageNum=(int) params.get("pageNum");
int pageSize=(int) params.get("pageSize");
PageHelper.startPage(pageNum, pageSize);
List<CompeteDataImportVO> datalist=competeDataImportMapper.selectCheckData(params);
List<CompeteDataImportVO> checkList=new ArrayList<CompeteDataImportVO>();
CompeteDataImportVO cv=null;
if(null!=datalist && datalist.size()>0){
for(int i=0; i<datalist.size(); i++){
cv=new CompeteDataImportVO();
String id=datalist.get(i).getId(); // id
String dateMonth=datalist.get(i).getDateMonth();
String vendorNo=datalist.get(i).getVendorNo();
String docNo=datalist.get(i).getDocNo();
String importName=datalist.get(i).getImportName();
String createName=datalist.get(i).getCreateName();
LocalDateTime createTime=datalist.get(i).getCreateTime();
LocalDateTime updateTime=datalist.get(i).getUpdateTime();
int confirmStatus=datalist.get(i).getConfirmStatus();
cv.setId(id);
cv.setDateMonth(dateMonth);
cv.setVendorNo(vendorNo);
cv.setDocNo(docNo);
cv.setImportName(importName);
cv.setCreateName(createName);
cv.setCreateTime(createTime);
cv.setUpdateTime(updateTime);
cv.setConfirmStatus(confirmStatus);
checkList.add(cv);
}
}
PageInfo pageInfo=new PageInfo(checkList);
ReturnMsgUtils result=new ReturnMsgUtils(BusinessUtils.CODE_200, BusinessUtils.MSG_SELECT_200, pageInfo);
return result;
}
三:正确代码
public ReturnMsgUtils selectCheckData(Map<String, Object> params) {
int pageNum=(int) params.get("pageNum");
int pageSize=(int) params.get("pageSize");
PageHelper.startPage(pageNum, pageSize);
List<CompeteDataImportVO> datalist=competeDataImportMapper.selectCheckData(params);
List<CompeteDataImportVO> checkList=new ArrayList<CompeteDataImportVO>();
CompeteDataImportVO cv=null;
if(null!=datalist && datalist.size()>0){
for(int i=0; i<datalist.size(); i++){
cv=new CompeteDataImportVO();
String id=datalist.get(i).getId(); // id
String dateMonth=datalist.get(i).getDateMonth();
String vendorNo=datalist.get(i).getVendorNo();
String docNo=datalist.get(i).getDocNo();
String importName=datalist.get(i).getImportName();
String createName=datalist.get(i).getCreateName();
LocalDateTime createTime=datalist.get(i).getCreateTime();
LocalDateTime updateTime=datalist.get(i).getUpdateTime();
int confirmStatus=datalist.get(i).getConfirmStatus();
cv.setId(id);
cv.setDateMonth(dateMonth);
cv.setVendorNo(vendorNo);
cv.setDocNo(docNo);
cv.setImportName(importName);
cv.setCreateName(createName);
cv.setCreateTime(createTime);
cv.setUpdateTime(updateTime);
cv.setConfirmStatus(confirmStatus);
checkList.add(cv);
}
}
PageInfo source = new PageInfo(datalist);
PageInfo target = new PageInfo();
BeanUtils.copyProperties(source, target);
target.setList(checkList);
ReturnMsgUtils result=new ReturnMsgUtils(BusinessUtils.CODE_200, BusinessUtils.MSG_SELECT_200, target);
return result;
}
四:分析。
1 )PageHelper.startPage(pageNum, pageSize); 会对他的下一行查询语句进行分页。即提前对datalist 进行了分页而不是对最终的checkList进行分页。
2)解决思路:先创建一个PageInfo对象,将datalist放到里面,我们称之为source对象,然后我们在创建一个PageInfo对象对象,我们称为target对象,我们将source对象拷贝给target对象,这样target对象就有了之前source对象的所有属性,然后我们在将最终的checkList放到target对象里面,就可以了。
参考资料:https://blog.csdn.net/qq_35080796/article/details/105508744
2021-02-02 17:36:58 阅读(2706)
名师出品,必属精品 https://www.91mszl.com