巧用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.mzph.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 …