PageHelper分页后,对list操作会导致分页无效:
原因问题:先进行分页处理;对已分页的结果进行逻辑处理,导致分页失效
方式一:直接对分页后的PageInfo对象中的数据进行操作
对list集合操作,先取出PageInfo里的list集合数据,再对数据进行相关操作
将操作完后的list集合再次存到PageInfo里,进行return
@Override
public PageInfo<StudentVo> selectAllStudent(int pageNow, int pageSize) {
PageInfo<StudentVo> StudentVoList= PageHelper.startPage(pageNow, pageSize).doSelectPageInfo(()->{
StudentMapper.selectAllStudent();
});
PageInfo<StudentVo> target = new PageInfo<>();
BeanUtils.copyProperties(StudentVoList, target);
List<StudentVo > collect = StudentVoList.getList().stream().collect(Collectors.toList());
List<StudentVo > studentList = new ArrayList<>();
for (StudentVo studentVo : collect) {
StudentVo student = new StudentVo ();
student.setHdId(studentVo.getHdId());
student.setHdType(studentVo.getHdType());
student.setHdTitle(studentVo.getHdTitle());
student.setHdStartDate(studentVo.getHdStartDate());
student.setHdEndDate(studentVo.getHdEndDate());
student.setHdStatus(studentVo.getHdStatus());
student.setHdImage(studentVo.getHdImage());
student.setHdNumber(studentVo.getHdNumber());
student.setGmtCreate(studentVo.getGmtCreate());
student.setGmtModified(studentVo.getGmtModified());
student.setUserId(studentVo.getUserId());
studentList.add(student);
}
target.setList(studentList);
return target;
}
方式二:分页工具类,解决 PageHelper 一个方法多个查询失效问题
public static class PageUtil {
public static <T> List<T> getPageSizeData(List<T> datas, int pageSize, int pageNow) {
int startNum = (pageNow- 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) {
for (int i = startNum; i < startNum + pageSize; i++) {
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;
}
}
public static Map<String, Object> getPageResult(List list, int pageSize, int pageNow) {
List data = PageUtil.getPageSizeData(list, pageSize, pageNow);
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("list", data);
map.put("pages", totlePage);
map.put("pageNow", pageNow);
map.put("pageSize", pageSize);
map.put("total", size);
return map;
}
}