在列表显示某个内容,但数据表没有这个字段
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;
}
这个只访问数据库一次
注意:重复多次访问数据库会影响数据库性能的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY