情况:
数据库11条数据,使用pagehelper分页后,传入参数1,10,返回的总条数只返回了10
原代码:
PageHelper.startPage(elderQueryVo.getPageNum(), elderQueryVo.getPageSize());
List<ElderInfo> list = elderInfoMapper.getElderInfoList(elderQueryVo);
HashMap<String,String> map = new HashMap<>();
if(list!=null){
Set<String> set = new HashSet<>();
list.forEach(s->{
set.add(s.getProvince());
set.add(s.getCity());
set.add(s.getCounty());
});
if(!set.isEmpty()){
List<SysRegion> byParentId = sysRegionMapper.getByParentId(set);
byParentId.forEach(sysRegion ->{
map.put(sysRegion.getRegionId(),sysRegion.getRegionName());
});
}
}
//list
Set<String> orgCodeS = list.stream().map(s -> s.getOrgCode()).collect(Collectors.toSet());
//批量查询机构信息
List<OrgInfo> byOrgName = orgInfoService.queryOrgInfoByOrgCodes(orgCodeS);
Map<String, String> collect = byOrgName.stream().collect(Collectors.toMap(OrgInfo::getOrgCode, OrgInfo::getOrgName));
List<ElderInfoVo> tmpList = JsonUtils.copyList(ElderInfoVo.class, list);
for(ElderInfoVo e :tmpList){
if(collect.containsKey(e.getOrgCode())) {
e.setOrgName(collect.get(e.getOrgCode()));
e.setProvince(map.get(e.getProvince()));
e.setCity(map.get(e.getCity()));
e.setCounty(map.get(e.getCounty()));
}
}
现代码:
PageHelper.startPage(elderQueryVo.getPageNum(), elderQueryVo.getPageSize());
List<ElderInfo> list = elderInfoMapper.getElderInfoList(elderQueryVo);
HashMap<String,String> map = new HashMap<>();
if(list!=null){
Set<String> set = new HashSet<>();
list.forEach(s->{
set.add(s.getProvince());
set.add(s.getCity());
set.add(s.getCounty());
});
if(!set.isEmpty()){
List<SysRegion> byParentId = sysRegionMapper.getByParentId(set);
byParentId.forEach(sysRegion ->{
map.put(sysRegion.getRegionId(),sysRegion.getRegionName());
});
}
}
//list
Set<String> orgCodeS = list.stream().map(s -> s.getOrgCode()).collect(Collectors.toSet());
//批量查询机构信息
List<OrgInfo> byOrgName = orgInfoService.queryOrgInfoByOrgCodes(orgCodeS);
Map<String, String> collect = byOrgName.stream().collect(Collectors.toMap(OrgInfo::getOrgCode, OrgInfo::getOrgName));
List<ElderInfoVo> tmpList = JsonUtils.copyList(ElderInfoVo.class, list);
for(ElderInfoVo e :tmpList){
if(collect.containsKey(e.getOrgCode())) {
e.setOrgName(collect.get(e.getOrgCode()));
e.setProvince(map.get(e.getProvince()));
e.setCity(map.get(e.getCity()));
e.setCounty(map.get(e.getCounty()));
}
}
PageInfo<ElderInfoVo> pageInfo = new PageInfo(list);
pageInfo.setList(tmpList);
return pageInfo;
不同点:
PageInfo<ElderInfoVo> pageInfo = new PageInfo(list);
pageInfo.setList(tmpList);
原因:
1、因为PageHelper在面对多个查询的时候不清楚我到底返回谁分页的数据
2、可能也是因为entity层的数据copy到vo层导致数据丢失(待考证)
当使用PageHelper在Java中进行数据库分页查询时,遇到一个奇怪的现象:请求11条数据,分页参数为1和10,实际返回的总条数却只有10。问题可能源于PageHelper在处理多个查询时无法正确识别应返回的分页数据,以及数据从entity层复制到vo层时可能出现的数据丢失。解决方案有待进一步研究。
974

被折叠的 条评论
为什么被折叠?



