在列表显示某个内容,但数据表没有这个字段

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;
  }

这个只访问数据库一次

注意:重复多次访问数据库会影响数据库性能的

 

posted @   小草1234  阅读(179)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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
点击右上角即可分享
微信分享提示