当PageHelper分页失效时,可以看一下PageHelper开启startPage后是否查询了多个list,是否在通过多个mapper.xml方法返回了多个list。
PageHelper.startPage(page,rows);
eg:
错误的情况:
开始分页的时候下面查询了2个list
PageHelper.startPage(page,rows);
if (StringUtils.isNotBlank(FB) && StringUtils.isBlank(startDate) && StringUtils.isBlank(endDate)){
List<SysDate> sysDateList = sysDateMapper.queryDateForFB(FB);
if (!sysDateList.isEmpty()){
startDate = sysDateList.get(0).getDate().concat(" 00:00");
endDate = sysDateList.get(sysDateList.size()-1).getDate().concat(" 23:59");
List<PmsTimeTrack> list = pmsTimeTrackMapper.queryPmsTimeTrack(startDate,endDate);
}else {
throw new BizException(Code.ERR_OTHER);
}
}
if(list!=null&&list.size()>0){
PageInfo pageInfo = new PageInfo(list);
result.setCount(pageInfo.getTotal());
result.setList(pageInfo.getList());
}
正确的情况:
在专一的list开启分页。
if (StringUtils.isNotBlank(FB) && StringUtils.isBlank(startDate) && StringUtils.isBlank(endDate)){
List<SysDate> sysDateList = sysDateMapper.queryDateForFB(FB);
if (!sysDateList.isEmpty()){
startDate = sysDateList.get(0).getDate().concat(" 00:00");
endDate = sysDateList.get(sysDateList.size()-1).getDate().concat(" 23:59");
PageHelper.startPage(page,rows);
List<PmsTimeTrack> list = pmsTimeTrackMapper.queryPmsTimeTrack(startDate,endDate);
}else {
throw new BizException(Code.ERR_OTHER);
}
}
if(list!=null&&list.size()>0){
PageInfo pageInfo = new PageInfo(list);
result.setCount(pageInfo.getTotal());
result.setList(pageInfo.getList());
}
同样也可以手写分页:
int total = list.size();
//pageHelper无效,手动分页,流操作:sorted排序、skip跳记录和limit限制显示记录数
List<PmsTimeTrack> collect = list
.stream()
.skip((page - 1) * rows)
.limit(rows)
.collect(Collectors.toList());
//计算总页数
int pageSum = total % rows == 0 ? total / rows : total / rows + 1;
PageHelper.startPage(page, rows);
PageInfo<PmsTimeTrack> scorePageInfo = new PageInfo<>(collect);
//总记录数
scorePageInfo.setTotal(total);
//总页数
scorePageInfo.setPages(pageSum);
//清除分页缓存
PageHelper.clearPage();
return scorePageInfo ;
手写分页原文连接](https://blog.csdn.net/Da_zhenzai/article/details/127864051)