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

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

这个只访问数据库一次

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

猜你喜欢

转载自blog.csdn.net/xiao297328/article/details/82885436
今日推荐