PageHelper分页总数、页数错误问题
问题描述
在使用PageHelper进行分页的时候,total总数和实际总数对不上,total数量=每页数据量
原代码
public PageInfo selectTowerWarning(String projectId, String deviceId, String date, String type) {
String table = "equip_tower_log_" + projectId;
if (StringUtils.isBlank(date)) {
date = DateUtils.formatDate(new Date());
}
List<TowerLog> lists = baseMapper.selectTowerWarning(table, deviceId, date, type);
List<Map<String, String>> listVo = dataTransform(lists)
PageInfo<Map<String, String>> pageInfo = new PageInfo(listVo);
return pageInfo;
}
问题原因
对分页后的结果进行了二次封装
PageHelper.startPage(pageIndex, pageSize);返回Page对象(继承ArrayList),里面有总数、当前页、页数等信息。
policyTypeService.queryPolicyTypePageList(pageReq);返回的实际也是Page对象,所以在进行Map转换的时候会丢失Page的分页信息。
解决方案
获取原始Page分页信息对vo对象进行手动赋值
public PageInfo selectTowerWarning(String projectId, String deviceId, String date, String type) {
String table = "equip_tower_log_" + projectId;
if (StringUtils.isBlank(date)) {
date = DateUtils.formatDate(new Date());
}
List<TowerLog> lists = baseMapper.selectTowerWarning(table, deviceId, date, type);
List<Map<String, String>> listVo = dataTransform(lists)
PageInfo<Map<String, String>> pageInfo = new PageInfo();
if (lists instanceof Page) {
pageInfo.setPageNum(((Page<TowerLog>) lists).getPageNum());
pageInfo.setPageSize(((Page<TowerLog>) lists).getPageSize());
pageInfo.setPages(((Page<TowerLog>) lists).getPages());
pageInfo.setTotal(((Page<TowerLog>) lists).getTotal());
}
pageInfo.setList(listVo);
return pageInfo;
}