在列表显示某个内容,但数据表没有这个字段
作者:互联网
1.需求:在出房合同编辑页面添加业务类型内容显示
思路:根据房源编号查询公司房源信息表,获取业务类型,再设置进去
查询性能比较:
1)
for (HbContractOut entity : page.getContent()) {
// 根据房源编号获取业务类型
// HouseCompanyInfo houseCompanyInfo =
// houseCompanyInfoService.findByHouseBillNo(entity.getHouseBillNo());
}
如果循环10万次的话,就得多访问数据库10万次
2)改进后
private Map<String, Object> dealQueryResult(Page<HbContractOut> page) {
List<HbContractOut> list = new ArrayList<>();
Map<Integer, SysDeptment> detpMap = DataUtil.findDeptMap();
Map<String, HouseCompanyInfo> houseCompanyMap = DataUtil.findCompanyTypeMap();
for (HbContractOut entity : page.getContent()) {
entity.setOutDeptName(detpMap.get(entity.getOutDeptId()).getDeptName());
entity.setInTypeDesc(houseCompanyMap.get(entity.getHouseBillNo()).getInType().getDesc());
list.add(entity);
}
DataUtil.renderSignedInfo(page.getContent(), WorkflowType.HB_CONTRACT_OUT);
return UtilPublic.toModelMap(list, page.getTotalElements());
}
public static Map<String, HouseCompanyInfo> findCompanyTypeMap() {
HouseCompanyInfoService service = SpringContextHolder.getBean(HouseCompanyInfoService.class);
return service.findMap();
}
@Override
public Map<String, HouseCompanyInfo> findMap() {
Map<String, HouseCompanyInfo> retMap = new HashMap<>();
houseCompanyInfoRepository.findAll().forEach(info -> {
retMap.put(info.getHouseBillNo(), info);
});
return retMap;
}
这个只访问数据库一次
注意:重复多次访问数据库会影响数据库性能的
标签:Map,return,list,entity,数据表,某个,getContent,列表,page 来源: https://blog.csdn.net/xiao297328/article/details/82885436