当前位置: 首页 > 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、路由器…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...