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

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

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分&#xff1a;派生类构造函数与析构函数 当创建一个派生类对象时&#xff0c;基类成员是如何初始化的&#xff1f; 1.当派生类对象创建的时候&#xff0c;基类成员的初始化顺序 …...