当前位置: 首页 > news >正文

Java通过字符串字段匹配形成树形结构

Java通过字符串字段匹配形成树形结构

文章目录

  • Java通过字符串字段匹配形成树形结构
    • 数据表
      • 模拟数据
    • 解决办法:
      • 1、domian 类:
      • 2、Node层(形成树形关系):
      • 3、controller 层
      • 4、Util 工具类
        • 1、BeanCopierUtil
        • 4、Mapper
      • 5、Manager(用来组装树形结构)
      • 6、测试:

有的时候我们形成树形不是以ID的关系进行匹配的而是以字符串进行形成,比方说下面这张表的数据,ID与父Id之间有一定的关系,但是联系不大,关系主要体现org_code上面,那这种情况,传统的方式就不太适用

在这里插入图片描述

数据表

CREATE TABLE `contract_main_org_info`  (`id` bigint(20) NOT NULL COMMENT '组织单位id',`parent_id` int(11) NULL DEFAULT NULL COMMENT '父组织单位id',`org_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织名称',`org_code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '组织单位code',`create_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

模拟数据

INSERT INTO `contract_main_org_info` VALUES (1676, 1645, '绍兴元气集团有限公司', 'A0001A0004', 'admin', '2024-06-04 20:43:37');
INSERT INTO `contract_main_org_info` VALUES (1748, 1645, '浙江云鱼力业集团有限公司', 'A0001A0005', 'admin', '2024-06-04 20:43:37');
INSERT INTO `contract_main_org_info` VALUES (1977, 1645, '光耀投资集团有限公司', 'A0001A0014', 'admin', '2024-06-04 20:56:17');
INSERT INTO `contract_main_org_info` VALUES (1821, 1645, '衢州明力投资集团有限公司', 'A0001A0013', 'admin', '2024-06-04 22:42:50');
INSERT INTO `contract_main_org_info` VALUES (2196, 1645, '计划展有限公司', 'A0001A0017', 'admin', '2024-06-04 23:04:27');
INSERT INTO `contract_main_org_info` VALUES (1666, 1645, '金华达力团有限公司', 'A0001A0003', 'admin', '2024-06-05 08:49:34');
INSERT INTO `contract_main_org_info` VALUES (2194, 1645, '综合治理部', 'A0001A0015', 'admin', '2024-06-05 09:40:50');
INSERT INTO `contract_main_org_info` VALUES (1646, 1645, '温州盛世集团有限公司', 'A0001A0001', 'admin', '2024-06-05 09:46:19');
INSERT INTO `contract_main_org_info` VALUES (2016, 1977, '招标投资公司', 'A0001A0014A0001', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2017, 1977, '大运监理公司', 'A0001A0014A0003', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2018, 1977, '大夏设计院有限公司', 'A0001A0014A0004', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2019, 1977, '大唐经济技术开发区中原有限责任公司', 'A0001A0014A0005', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2170, 1977, '大唐光明发展有限公司', 'A0001A0014A0006', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2173, 1977, '大唐核聚变建设有限公司', 'A0001A0014A0007', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2181, 1977, '大唐服务有限公司', 'A0001A0014A0008', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2186, 1977, '大汉运输工程有限公司', 'A0001A0014A0009', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2187, 1977, '大汉晨南力建设有限公司', 'A0001A0014A0010', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2188, 1977, '渤海雁山建设有限公司', 'A0001A0014A0011', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2192, 1977, '象牙山工业有限公司', 'A0001A0014A0012', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2197, 1977, '欧洲永动机产业投资有限公司', 'A0001A0014A0013', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2198, 1977, '宏大输工程有限公司', 'A0001A0014A0014', 'admin', '2024-06-05 09:55:31');
INSERT INTO `contract_main_org_info` VALUES (2380, 2340, '创力研究院有限公司', 'A0001A0022A0001', 'admin', '2024-06-05 11:49:41');
INSERT INTO `contract_main_org_info` VALUES (2389, 2340, '创力集团有限公司博创物资分公司', 'A0001A0022A0004', 'admin', '2024-06-05 11:49:41');
INSERT INTO `contract_main_org_info` VALUES (2424, 2340, '纳众提供服务有限公司', 'A0001A0022A0017', 'admin', '2024-06-05 11:49:41');
INSERT INTO `contract_main_org_info` VALUES (4771, 1645, '测试集团有限公司', 'A0001A0043', 'admin', '2024-06-04 22:43:29');
INSERT INTO `contract_main_org_info` VALUES (2910, 2380, '创力研究院有限公司海盐分公司', 'A0001A0022A0001A0010', 'admin', '2024-06-05 14:22:56');
INSERT INTO `contract_main_org_info` VALUES (3540, 2910, '大元北目有限公司', 'A0001A0022A0001A0010A0001', 'admin', '2024-06-05 14:22:56');
INSERT INTO `contract_main_org_info` VALUES (1653, 1645, '北京大明聚力集团有限公司', 'A0001A0002', 'admin', '2024-06-05 14:25:30');
INSERT INTO `contract_main_org_info` VALUES (1657, 1653, '战略发展部', 'A0001A0002A0003', 'admin', '2024-06-05 14:25:30');
INSERT INTO `contract_main_org_info` VALUES (1655, 1653, '综合管理部', 'A0001A0002A0002', 'admin', '2024-06-05 14:26:06');
INSERT INTO `contract_main_org_info` VALUES (1659, 1653, '财务财产部', 'A0001A0002A0004', 'admin', '2024-06-05 14:26:06');
INSERT INTO `contract_main_org_info` VALUES (3893, 1977, '后汉投资集团有限公司东耀汽车运输分公司', 'A0001A0014A0025', 'admin', '2024-06-05 16:17:28');
INSERT INTO `contract_main_org_info` VALUES (4713, 1977, '后汉经济技术开发区北方有限责任公司', 'A0001A0014A0026', 'admin', '2024-06-05 16:20:26');
INSERT INTO `contract_main_org_info` VALUES (3158, 2305, '公司战略发展部', 'A0001A0014A0011A0002A0001', 'admin', '2024-06-05 16:31:29');
INSERT INTO `contract_main_org_info` VALUES (2699, 2018, '项目经理部门', 'A0001A0014A0004A0004', 'admin', '2024-06-05 16:35:42');
INSERT INTO `contract_main_org_info` VALUES (2302, 2186, '大明集团有限公司', 'A0001A0014A0009A0001', 'admin', '2024-06-05 16:35:42');
INSERT INTO `contract_main_org_info` VALUES (1, 

相关文章:

Java通过字符串字段匹配形成树形结构

Java通过字符串字段匹配形成树形结构 文章目录 Java通过字符串字段匹配形成树形结构数据表模拟数据解决办法:1、domian 类:2、Node层(形成树形关系):3、controller 层4、Util 工具类1、BeanCopierUtil4、Mapper5、Manager(用来组装树形结构)6、测试:有的时候我们形成树形不…...

数字孪生智慧水利:精准管理与智能决策的新时代

图扑数字孪生技术在智慧水利中的应用,通过虚拟模型与真实水利系统的无缝连接,实现对水资源和水利工程的全面监控和精细管理。实时数据采集与动态模拟提升了水利系统的预测和响应能力,从洪水预警到水质监测,数字孪生助力各项决策更…...

基于ChatGLM3的本地问答机器人部署流程

基于ChatGLM3的本地问答机器人部署流程 前言一、确定文件结构1.新建文件夹储存本地模型2.下载源码和模型 二、Anaconda环境搭建1.创建anaconda环境2.安装相关库3.设置本地模型路径4.启动 三、构建本地知识库1.下载并安装postgresql2.安装c库3.配置向量插件 四、线上运行五、 全…...

归并排序——逆序数对的统计

逆序数对的统计 题目描述 运行代码 #include <iostream> using namespace std; #define LL long long const int N 1e5 5; int a[N], tmp[N]; LL merge_sort(int q[], int l, int r) {if (l > r)return 0; int mid l r >> 1; LL res merge_sort(q, l,…...

基于截图和模拟点击的自动化压测工具开发(MFC)

1.背景 想对一个MFC程序做自动压测功能&#xff0c;根据判断程序界面某块区域是否达到预定状态&#xff0c;来自动执行鼠标点击或者键盘输入的操作&#xff0c;以解决测试人员需要重复手动压测问题。 1.涉及的技术 串口控制&#xff0c;基于MFC橡皮筋类(CRectTracker)做一个…...

力扣每日一题 6/10

881.救生艇[中等] 题目&#xff1a; 给定数组 people 。people[i]表示第 i 个人的体重 &#xff0c;船的数量不限&#xff0c;每艘船可以承载的最大重量为 limit。 每艘船最多可同时载两人&#xff0c;但条件是这些人的重量之和最多为 limit。 返回 承载所有人所需的最小船…...

[知识点] 内存顺序属性的用途和行为

C标准库中定义了以下几种内存顺序属性&#xff1a; std::memory_order_relaxedstd::memory_order_consumestd::memory_order_acquirestd::memory_order_releasestd::memory_order_acq_relstd::memory_order_seq_cst 1. std::memory_order_relaxed 定义&#xff1a;不提供同步…...

JAVA Mongodb 深入学习(二)索引的创建和优化

一、常用索引类型 1、单个索引 单个索引的创建 db.你的表名.createIndex({"你的字段名":1}) 单个索引的创建且是唯一索引 db.你的表名.createIndex({"你的字段名":1}),{ unique: true }) 2、复合索引 将多个过滤的字段&#xff0c;做成索引&#xff0c;…...

转让北京劳务分包地基基础施工资质条件和流程

地基基础资质转让流程是怎样的?对于企业来说&#xff0c;资质证书不仅是实力的证明&#xff0c;更是获得工程承包的前提。而在有了资质证书后&#xff0c;企业才可以安心的准备工程投标&#xff0c;进而在工程竣工后获得收益。而对于从事地基基础工程施工的企业&#xff0c;需…...

Python基础——字符串

一、Python的字符串简介 Python中的字符串是一种计算机程序中常用的数据类型【可将字符串看作是一个由字母、数字、符号组成的序列容器】&#xff0c;字符串可以用来表示文本数据。 通常使用一对英文的单引号&#xff08;&#xff09;或者双引号&#xff08;"&#xff09;…...

AP的数据库性能到底重要吗?

先说结论&#xff1a;没那么重要。甚至可能不重要。 我用我的经历和分析给大家说说。诸位看看如何。 不重要的观点是不是不能接受&#xff1f; 因为这些是站在我们角度觉得的。而实际上使用者&#xff08;业务或者用户&#xff09;&#xff0c;真的不太在乎我们所在乎的。 …...

Vue3【二】 VSCode需要安装的Vue语法插件

VSCode需要安装的 适配Vue3的插件 Vue-Official插件安装...

设置路径别名

一、描述 如果想要给路径设置为别名&#xff0c;就是常见的有些项目前面的引入文件通过开头的&#xff0c;也就是替换了一些固定的文件路径&#xff0c;怎么配置。 二、配置 import { defineConfig } from vite import react from vitejs/plugin-react import path from path…...

人事信息管理系统(Java+MySQL)

一、项目背景 在现代企业中&#xff0c;管理大量员工的工作信息、薪资、请假、离职等事务是一项非常繁琐和复杂的任务。传统的手工管理方式不仅效率低下&#xff0c;而且容易出错。为了提高人事管理的效率&#xff0c;减少人工操作带来的错误&#xff0c;企业迫切需要一个高效…...

Python 中生成器与普通函数的区别

在Python中&#xff0c;生成器和普通函数有一些区别。 生成器使用 yield 语句从函数中返回一个值&#xff0c;而不是使用 return 语句。当生成器函数被调用时&#xff0c;它会返回一个迭代器对象&#xff0c;而非立即执行函数体内的代码。 生成器函数可以通过多次调用 yield 语…...

最小栈、栈的弹出(C++)

1.最小栈 思路分析&#xff1a; 代码&#xff1a; class MinStack { public:MinStack() {}void push(int val) {st.push(val);//两种情况需要更新最小值//1.最小栈为空(就是存最小值的那个栈)//2.插入的值小于或等于最小栈的栈顶元素if(minstack.empty()||minstack.top()>…...

20240607每日通信--------VUE3前端引入scoket-io,后端引入Netty-SocketIO,我成功了,希望一起交流沟通

无语 前置&#xff1a; VUE3 前端集成scoket-io socket.io-client Sringboot 3.0JDK17集成Netty-SocketIO Netty-SocketIO 失败原因一&#xff1a; 前期决定要写demo时候&#xff0c;单独了解了&#xff0c;后端引入Netty-SocketIO注意事项&#xff0c;详见我先头写的博客 前…...

Tomcat源码解析(八):一个请求的执行流程(附Tomcat整体总结)

Tomcat源码系列文章 Tomcat源码解析(一)&#xff1a;Tomcat整体架构 Tomcat源码解析(二)&#xff1a;Bootstrap和Catalina Tomcat源码解析(三)&#xff1a;LifeCycle生命周期管理 Tomcat源码解析(四)&#xff1a;StandardServer和StandardService Tomcat源码解析(五)&…...

python使用gdb进行堆栈查看与调试

以ubuntu示例&#xff0c;先安装gdb与python-dbg&#xff0c;dbg按照python版本安装 apt install -y gdb python3.10-dbg 使用top查看python进程&#xff0c;使用gdb操作python进程 gdb python3 6618 加载环境 source /usr/share/gdb/auto-load/usr/bin/python3.10-gdb.py…...

【DevOps】路由与路由器详细介绍:原理、功能、类型及应用场景

目录 一、路由详细介绍 1、什么是路由&#xff1f; 2、路由的基本原理 3、 路由协议 静态路由 动态路由 4、 路由表 5、 路由算法 6、路由的优缺点 优点 缺点 7、 路由应用场景 二、路由器详细介绍 1、什么是路由器&#xff1f; 2、 路由器的工作原理 3、路由器…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...