解决PageHelper分页不正常,pages始终等于1,total 始终等于pageSize的问题
问题
pages始终等于1,total 始终等于pageSize
原因
原因是我在查询到list数据之后,对list做了操作,导致分页不正常
// 这是service层的类 public PageInfo<TUiWork> getAllByPagination(Integer pageNum, Integer pageSize) { PageHelper.startPage(pageNum, pageSize); List<TUiWork> workList = workMapper.getAll(); // 问题就在这里,我对workList做了操作 List<TUiWork> newWorkList = new ArrayList<>(); for (TUiWork work : workList) { List<String> imageUrlList = getImageUrlListByIds(work.getImageId()); work.setImageUrls(imageUrlList); newWorkList.add(work); } // 把新的list传递给了PageInfo,导致分页不正常 PageInfo<TUiWork> tUiWorkPageInfo = new PageInfo<>(newWorkList); return tUiWorkPageInfo; }
解决
第一种:
重新自定义PageInfo类,能解决问题,但是比较繁琐,不探究。
第二种:(推荐)
直接用PageHelper的类来实现,代码如下:
//创建Page类 Page page = new Page(pageNum, pageSize); //为Page类中的total属性赋值 int total = list.size(); page.setTotal(total); //计算当前需要显示的数据下标起始值 int startIndex = (pageNum - 1) * pageSize; int endIndex = Math.min(startIndex + pageSize,total); //从链表中截取需要显示的子链表,并加入到Page page.addAll(list.subList(startIndex,endIndex)); //以Page创建PageInfo PageInfo pageInfo = new PageInfo<>(page); return pageInfo;

浙公网安备 33010602011771号