如何在一个实体类中放入从多个sql语句中查询的数据
查询1
public List sqlForDiagnosis(Date startDate, Date endDate, String cataloger) { String sqlForDiagnosis = "select i.cataloger name" + ", b.STAFF_NAME staff_name"+ ", count(distinct i.visit_no) mr_number" + ", count(d.diag_code) diagnosis_number" + ", count(distinct d.diag_code) diagnosis_type_number" + " from inp_visit i" + " left join diagnostic_category d on i.patient_id=d.patient_id and i.visit_no=d.visit_no" + " left join staff_dict b on i.CATALOGER=b.emp_id"+ " where i.catalog_date>=to_date('" + DateTimeParameter.format(startDate) + "', 'yyyy-mm-dd hh24:mi:ss')" + " and i.catalog_date<=to_date('" + DateTimeParameter.format(endDate) + "', 'yyyy-mm-dd hh24:mi:ss')"; if(!StringUtils.isEmpty(cataloger)){ sqlForDiagnosis += "and i.cataloger="+ cataloger; } sqlForDiagnosis += " group by i.cataloger,b.STAFF_NAME" + " order by i.cataloger"; return createNativeQueryToMap(sqlForDiagnosis, new ArrayList<>()); }
查询2
public List sqlForOperation(Date startDate, Date endDate,String cataloger) { String sqlForOperation = "select i.cataloger name" + ", b.STAFF_NAME staff_name"+ ", count(distinct i.visit_no) mr_number" + ", count(o.operation_code) operation_number" + ", count(distinct o.operation_code) operation_type_number" + " from inp_visit i" + " left join operation o on i.patient_id=o.patient_id and i.visit_no=o.visit_no" + " left join staff_dict b on i.CATALOGER=b.emp_id"+ " where i.catalog_date>=to_date('" + DateTimeParameter.format(startDate) + "', 'yyyy-mm-dd hh24:mi:ss')" + " and i.catalog_date<=to_date('" + DateTimeParameter.format(endDate) + "', 'yyyy-mm-dd hh24:mi:ss')" ; if(!StringUtils.isEmpty(cataloger)){ sqlForOperation += "and i.cataloger="+ cataloger; } sqlForOperation += " group by i.cataloger,b.STAFF_NAME" + " order by i.cataloger"; return createNativeQueryToMap(sqlForOperation, new ArrayList<>()); }
插入数据
public List statisticsWorkloadForStaff(Date startDate, Date endDate,String cataloger) { List<Map> diagnosisStatistic = inpMedicalRecordDao.sqlForDiagnosis(startDate, endDate,cataloger); List<Map> operationStatistic = inpMedicalRecordDao.sqlForOperation(startDate, endDate,cataloger); Map<String, StaffWorkloadStatisticVO> temp = new HashMap<>(); for (Map diagnosis : diagnosisStatistic) { temp.put((String) diagnosis.get("name"), new StaffWorkloadStatisticVO((String) diagnosis.get("staffName"), (BigDecimal) diagnosis.get("mrNumber") , (BigDecimal) diagnosis.get("diagnosisNumber"), (BigDecimal) diagnosis.get("diagnosisTypeNumber") , null, null)); } for (Map operation : operationStatistic) { String name = (String) operation.get("name"); StaffWorkloadStatisticVO vo = temp.get(name); vo.setOperationNumber((BigDecimal) operation.get("operationNumber")); vo.setOperationTypeNumber((BigDecimal) operation.get("operationTypeNumber")); } return new ArrayList(temp.values()); }
使用数据库别名对应参数 建立一个List<Map> 用查询数据的唯一值列为key 分多次插入对应数据 最后返回拼装好的完整数据 需要多个数据表中有相同的唯一值列以做对照
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构