巧用java8的stream流的.collect(Collectors.toMap(arg1,arg2))

最近公司接手了一個低代碼二次開發平臺的需求,需要連接多張表的數據然后展示到界面上。

按照java的sql思路,我們直接通過left join去關聯表就行了,但是該低代碼平臺有對sql連表查詢有限制,就是有些表它是存在一個domainKey的,實體表的domainKey如果不相同的話連表是不允許的。所以就無法使用連表了。

那么我的做法就是直接查詢一張表,然后把需要連表的那些id都查詢來,

也就是select xxx,xxx,xxx_id,yyy_id,ddd_id from xxx_table.

然后執行完sql之后的返回結果res進行解析。

一開始我是直接想在for循環里面,每一次遍歷就調用一次sql通過id去查表。但是這樣不行。不能在for循環,每次遍歷去調用sql,這樣會占用sql連接,造成資源占據大的情況。

所以最終的想法,就是單獨查詢xxx_id對應表名的數據,查詢xxx_id對應表名的數據,查詢ddd_id對應表名的數據。

然后再將每個sql對應的數據進行map映射成下面這中結構:

Map<key,value> => Map<id,object>

現在我寫出一個例子:

然后我們就可以在遍歷的時候,直接調用該方法就行了。

如下:

testDBResult.stream().foreach((arg) -> {arg.setXXXName(map.get(arg.getXXXId()) == null ? "" : map.get(arg.getXXXId()).getXXXName());arg.setYYYName(map.get(arg.getYYYId()) == null ? "" : map.get(arg.getYYYId())).getYYYName();arg.setDDDName(map.get(arg.getDDDId()) == null ? "" : map.get(arg.getDDDId())).getDDDName();
})

總結:

? ? ? ? 巧用java8的stream流的.collect(Collectors.toMap(arg1,arg2))適用于通過返回結果的id查對應表的某一個數據。當然可以直接連表是最好的。

最后:

? ? ? ? 如果大家覺得這篇文章對你們有所幫助的話,麻煩點個免費的贊贊,也祝各位碼農在未來的IT的道路上越走越遠,謝謝。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17835.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17835.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17835.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HotSpot虛擬機的幾個實現細節

文章目錄 STW安全點安全區域記憶集與卡表讀寫屏障 STW 收集器在根節點枚舉這步都是必須要暫停用戶線程的&#xff08; STW &#xff09;&#xff0c;如果不這樣的話在根節點枚舉的過程中由于引用關系在不斷變化&#xff0c;分析的結果就不準確 安全點 收集器在工作的時候某些…

切勿安裝這五款流氓軟件,你中招了沒

流氓軟件&#xff0c;又稱為惡意軟件&#xff0c;是一類設計用來損害用戶設備、竊取信息或干擾正常使用的程序。以下是五款臭名昭著的流氓軟件介紹&#xff0c;提醒切勿安裝&#xff0c;只能說一個比一個毒&#xff0c;你中招了沒 可以去去虛擬機試試誰的毒更強一些&#xff0…

高工咨詢:《2024中國人形機器人產業發展藍皮書》

高工咨詢所發布的《2024中國人形機器人產業發展藍皮書》全面梳理了人形機器人產業的發展現狀、政策環境、資本市場、技術發展、市場前景以及面臨的機遇與挑戰等情況。 人形機器人是當今世界科技領域最具潛力和前景的產業之一。隨著科技的不斷進步和人 工智能技術的快速發展&…

基于jeecgboot-vue3的Flowable增加表單功能(二)

因為這個項目license問題無法開源&#xff0c;更多技術支持與服務請加入我的知識星球。 接上一節 6、增加一個types.ts 類型 export interface FormForm {id: number | string | undefined;formName: string;formContent?: string;remark: string; } 7、api增加一個getForm…

Github Page 部署失敗

添加 .gitmodules 文件 [submodule "themes/ayer"]path themes/ayerurl https://github.com/Shen-Yu/hexo-theme-ayer.git 添加 .nojekyll 文件

React Fiber

React引入Fiber前后的區別&#xff1a; 渲染流程的控制&#xff1a; 之前&#xff1a;在Fiber之前&#xff0c;React的渲染過程是一個相對線性的深度優先遍歷過程&#xff0c;從根節點開始遍歷整個組件樹&#xff0c;這個過程一旦開始就無法中斷&#xff0c;直到完成。如果遇到…

滾珠花鍵在工業自動化領域中有什么優勢?

滾珠花鍵是工業自動化設備中重要的傳動系統之一&#xff0c;不僅在工業自動化系統中有著廣泛的運用&#xff0c;還在機械制造領域、航空航天領域、工業汽車領域、工業機器人、高速鐵路、新能源領域 等都得到廣泛應用。由于具有高精度、高承載、耐磨損、傳遞扭矩大等特點&#x…

android 關于自定義View在特殊情況下觸發setPressed方法(View源碼解析)

文章目錄 前言一、為什么樣式會變&#xff1f;二、調試發現原因并解決1.找到原因2.解決 總結 前言 最近在負責一些UI相關的工作,測試給到一個UI的bug,說是搜索框在點擊的時候,旁邊的’‘X’變成按壓的效果了,我轉手就把bug轉給負責公控的同事了,因為這個搜索框是公控同事提供的…

Mysql常用操作DDL數據庫、表操作:

SQl DDl-數據庫操作 查詢 查詢所有數據庫 show databases; 查詢當前數據庫 select database(); 創建 create database [if not exists] 數據庫名 [default charset 字符集] [collate 排序規則]; 刪除 drop database[if exists] 數據庫名; 使用 use 數據庫名;…

K8s集群中的Pod調度約束親和性與反親和性

前言 在 K8s 集群管理中&#xff0c;Pod 的調度約束——親和性&#xff08;Affinity&#xff09;與反親和性&#xff08;Anti-Affinity&#xff09;這兩種機制允許管理員精細控制 Pod 在集群內的分布方式&#xff0c;以適應多樣化的業務需求和運維策略。本篇將介紹 K8s 集群中…

運維開發詳解:現代IT環境的核心角色

隨著信息技術的快速發展和互聯網應用的廣泛普及&#xff0c;運維開發&#xff08;DevOps&#xff09;在現代IT環境中扮演著越來越重要的角色。本文將詳細探討運維開發的概念、歷史背景、關鍵實踐、工具和未來趨勢&#xff0c;旨在為讀者提供全面的理解。 什么是運維開發&#…

labview類編程

1.父類的功能是通用功能&#xff0c;所有子類都含有父類的功能&#xff0c;重寫會自動執行一次父類的功能。 2.每個子類都用了父類的注冊vi&#xff0c;所以在調用的時候&#xff0c;出來的就是子類注冊的vi&#xff0c;也就是window.vi。 3.假如要設計一個父類的vi,首先是保存…

手持高速暴力風扇方案32位單片機

RAMSUN一款低成本的暴力無刷風扇方案&#xff0c;集成無刷電機驅動、電池低壓保護等功能的同時&#xff0c;保持較低的待機功耗。 手持高速暴力風扇主控芯片MM32SPIN080C高性能的單電機控制 SOC 產品,集成了運動控制所需的專用模擬外設。包括 12 位高精度 ADC、2 路模擬比較器…

Mac 系統 clion 使用 getline 無法讀取文件內容

不知道是 mac 的問題還是 clion 的問題&#xff0c;如下面代碼 #include <iostream> #include <fstream>using namespace std;int main() {string file_name "1.txt";std::ifstream file(file_name);if (file.is_open()) {std::string line;while (std…

airtest做web端UI自動化實戰

安裝 官網下載客戶端 airtest庫安裝 pip install airtest pip install pocoui腳本錄制 利用airtest客戶端錄制腳本 web端輔助插件-selenium windows打開: 設置chrome路徑 開始調式錄制 腳本運行 # -*- coding: utf-8 -*- """ Time &#xff1a; 2024/5/…

龍迅LT86102UXE HDMI 2.0分配兩個HDMI 2.0輸出,支持標準4K60HZ,內置MCU供電可自動操作

龍迅LT86102UXE描述&#xff1a; Lontium LT86102UXE HDMI2.0分配器具有1&#xff1a;2的分配器&#xff0c;符合HDMI2.0/1.4規范&#xff0c;最大6Gbps高速數據速率&#xff0c;自適應均衡RX輸入和預先強調的TX輸出&#xff0c;以支持長電纜應用程序&#xff0c;內部TX通道交…

前端開發——煉金術師的畫布:JavaScript在圖像處理領域的魔法手冊【含代碼示例】

煉金術師的畫布&#xff1a;JavaScript在圖像處理領域的魔法手冊【含代碼示例】 前言&#xff1a;圖像處理的魔法基礎基本概念&#xff1a;像素的舞蹈Canvas API&#xff1a;前端的畫板 圖像處理的咒語&#xff1a;基礎操作加載與繪制圖像魔法變形&#xff1a;圖像裁剪色彩魔法…

用大模型搭建一個自己的新聞小助手

背景 信息快速增長的時代&#xff0c;及時獲取到有價值的資訊是一件很必要的事情。已經有各類新聞app和獲取信息的渠道了&#xff0c;為什么還需要在構建一個小助手來獲取新聞資訊呢&#xff1f;其實原因很簡單各類新聞app服務的是具體一類人群&#xff0c;個人和人群還是有偏…

kafka-消費者組-發布訂閱測試

文章目錄 1、發布訂閱測試1.1、創建消費者4并指定組 my_group21.2、列出所有的消費者組1.3、查看 my_group2 組的詳細信息1.4、發送第六條消息accomplish1.4.1、查看 my_group1 組的詳細信息1.4.2、查看 my_group2 組的詳細信息 1、發布訂閱測試 接著上一篇點對點博客測試 kafk…

LabVIEW控制Trio控制器

將LabVIEW與Trio控制器結合&#xff0c;可以實現對復雜運動系統的控制和監測。以下是詳細的方法和注意事項&#xff1a; 一、準備工作 軟件安裝&#xff1a; 安裝LabVIEW開發環境&#xff0c;確保版本兼容性。 安裝Trio控制器的相關驅動程序和軟件&#xff0c;如Trio Motion …