JAVA后端实现全国区县下拉选择--树形结构
设计图如图:

直接上代码
数据库中的格式:

JAVA实体类:
@Data
public class SysAreaZoningDO {private Long districtId;private Long parentId;private String districtName;private List<SysAreaZoningDO> children;
}
MapperSQL语句:
<select id="getAllArea" resultType="cn.iocoder.saas.module.bank.dal.dataobject.syszoning.SysAreaZoningDO">WITH Provinces AS (SELECT *FROM sys_zoningWHERE parent_id = 0),Cities AS (SELECT *FROM sys_zoningWHERE parent_id IN (SELECT id FROM Provinces)),Districts AS (SELECT *FROM sys_zoningWHERE parent_id IN (SELECT id FROM Cities))SELECTp.id AS districtId,p.parent_id AS parentId,p.name AS districtName,NULL AS order_city,NULL AS order_area,'province' AS levelFROM Provinces pUNION ALLSELECTc.id AS districtId,c.parent_id AS parentId,c.name AS districtName,c.order_city AS order_city,NULL AS order_area,'city' AS levelFROM Cities cUNION ALLSELECTd.id AS districtId,d.parent_id AS parentId,d.name AS districtName,c.order_city AS order_city,d.order_area AS order_area,'district' AS levelFROM Districts dJOIN Cities c ON d.parent_id = c.idORDER BY order_city DESC,order_area ASC;</select>
Service层实现方法:
@Overridepublic List<SysAreaZoningDO> getAllArea() {// 获取扁平化的所有区域数据List<SysAreaZoningDO> allAreas = userAddressMapper.getAllArea();Map<Long, SysAreaZoningDO> areaMap = new HashMap<>();List<SysAreaZoningDO> provinces = new ArrayList<>();for (SysAreaZoningDO area : allAreas) {areaMap.put(area.getDistrictId(), area);if (area.getParentId() == 0) {provinces.add(area);}}for (SysAreaZoningDO area : allAreas) {if (area.getParentId() != 0) {SysAreaZoningDO parent = areaMap.get(area.getParentId());if (parent != null) {if (parent.getChildren() == null) {parent.setChildren(new ArrayList<>());}parent.getChildren().add(area);}}}return provinces;}
返回格式:

相关文章:
JAVA后端实现全国区县下拉选择--树形结构
设计图如图: 直接上代码 数据库中的格式: JAVA实体类: Data public class SysAreaZoningDO {private Long districtId;private Long parentId;private String districtName;private List<SysAreaZoningDO> children; } MapperSQL语句…...
数据结构速成
1. 数据结构与算法 2. 顺序表 3. 链表 4. 栈与队列 5. 串 6. 树与二叉树(1) 7. 树与二叉树(2) 8. 图 9. 图的应用 10. 查找 11. 排序(1) 12. 排序(2)...
Electron-Vite 项目搭建(Vue)
前提条件 Node.js: 确保已安装 Node.js 版本 18 或更高版本 (推荐使用最新稳定版)。Vite: 确保 Vite 版本为 4.0 或以上。包管理工具: 推荐使用 pnpm,但也可以使用 npm 或 yarn。 安装 Electron-Vite 首先,在项目中安装 electron-vite 作为开发依赖&a…...
如何寻找和改进开源项目来作为个人简历项目
寻找开源项目: 使用开源代码平台(如GitHub)来搜索优质的开源项目。例如,可以通过搜索关键词如“spring boot”, in name spring boot或者使用更具体的条件,如“star大于1000”来筛选热门项目。 star:>…...
STEM真题 第五题 比 n 小的最大数
题目描述 给定一个正整数 n,请将 n 中的每位数字重新排列并组成一个新数,要求新数的值要小于 n,请找出所有 符合要求的新数中最大的那个正整数,如果不存在这样的正整数,则输出 -1。例 1:n 312࿰…...
HuggingGPT Solving AI Tasks with ChatGPT and its Friends in Hugging Face 论文解读
1. 引言 近年来,大型语言模型(LLMs)如ChatGPT在自然语言处理领域取得了惊人的进展,展现出强大的语言理解、生成和推理能力。然而,当前的LLMs仍然存在一些局限性,例如无法处理复杂信息(如视觉和…...
深入了解HTTPDNS-使用Python实现一个HTTPDNS服务
深入了解HTTPDNS-使用Python实现一个HTTPDNS服务 HTTPDNS的起源 传统的DNS(Domain Name System)是互联网的核心协议之一,负责将人类可读的域名解析为机器可理解的IP地址。经典的DNS查询基于UDP协议,在特定网络环境下可能存在如下…...
IDEA 可视化使用 git rebase 合并分支步骤 使git分支树保持整洁
模拟环境 dev 分支开发完一个功能,需要合并到 master 分支,如果现在直接 merge 合并的话 git分支树会出现杂乱分叉,先把 master 分支 rebase 到 dev git分支树就会是整洁的一条直线 git rebase介绍 rebase:翻译成中文是重新设定,…...
网络安全教学博客(二):常见网络安全威胁剖析
在上一篇博客中,我们了解了网络安全的基础概念和重要性。今天,让我们深入探讨一下常见的网络安全威胁,以便我们能够更好地识别和防范它们。 恶意软件(Malware) 病毒(Virus):病毒是一…...
区块链技术及应用(期末考试版)
简述区块链中的默克尔树结构及其作用。 默克尔树(Merkle Tree)是一种二叉树数据结构,其叶节点是数据块的哈希值,而每个非叶节点是其子节点哈希值的哈希。它的主要作用是高效且安全地验证大规模数据结构中的数据内容。 解释为什么…...
Ubuntu22.04 docker如何发布镜像(和用git差不多)
在dockerhub上创建远程仓库:https://hub.docker.com/ 将本地镜像打tag,并修改成可以上传到 dockerhub 的形式 # 查看本地镜像# 修改镜像 ## docker tag 镜像名称:标签 新的镜像名称(要和远程仓库dockerhub上的一致):新的标签pus…...
基于python绘制数据表(上)
利用python绘制各种数据图表 绘制柱形图-源码 from openpyxl import Workbook from openpyxl.chart import BarChart, Reference# 创建工作薄 wb Workbook(write_onlyTrue) # 创建工作表 ws wb.create_sheet(月收入)# 准备数据 rows [(月份, 销售额),(1, 23),(2, 43),(3, …...
【机器学习】在向量的流光中,揽数理星河为衣,以线性代数为钥,轻启机器学习黎明的瑰丽诗章
文章目录 线性代数入门:机器学习零基础小白指南前言一、向量:数据的基本单元1.1 什么是向量?1.1.1 举个例子: 1.2 向量的表示与维度1.2.1 向量的维度1.2.2 向量的表示方法 1.3 向量的基本运算1.3.1 向量加法1.3.2 向量的数乘1.3.3…...
Python PPT合并与拆分 – 详解
目录 使用工具 Python 合并 PPT 合并多个PPT文档 合并每个PPT文档中的特定幻灯片 Python 拆分 PPT 按幻灯片数量拆分 按幻灯片范围拆分 按幻灯片内容拆分 按节 (Section) 拆分 在日常工作或学习中,我们经常需要对PPT文件进行调整,比如将多个PPT…...
舌头分割数据集labelme格式2557张1类别
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):2557 标注数量(json文件个数):2557 标注类别数:1 标注类别名称:["tongue"] 每个类别标注的框数࿱…...
LVS能否实现两台服务器的负载均衡
LVS能否实现两台服务器的负载均衡 是的,LVS(Linux Virtual Server)可以实现两台服务器的负载均衡,并且它非常适合这种场景。 LVS(Linux Virtual Server)简介: LVS 是一种基于 Linux 的负载均…...
onlyoffice 容器配置修改后制作镜像导出以及上传到 dockerhub
1.将容器制作成新的镜像 docker commit -p -a "xxx" -m "zh-cn-20-100" onlyoffice ooffice:7.1.1.23docker commit: 这是 Docker 中用于创建新镜像的命令。 -p: 这个选项用于在提交之前暂停容器的运行。这可以确保数据的完整性,因为容器在提交…...
Java常用 Date 时间格式化、Calender日历、正则表达式的用法
目录 1. SimpleDateFormat 日期格式化类 1.1 Date 类型转 String 1.2 String 类型转 Date 2. Calendar 日历类 3. 正则表达式 3.1 正则表达式的组成部分 3.2 手机号正则表达式 3.3 常用密码校验正则表达式 1. SimpleDateFormat 日期格式化类 SimpleDateFormat 是Java中…...
案例讲解自然语言处理(NLP)
自然语言处理(NLP)是一种涉及计算机与人类自然语言之间的交互的技术。以下是一些NLP技术的示例: 语言翻译:NLP可以用于将一种语言翻译成另一种语言。Google翻译就是一个使用NLP技术的例子,它可以将输入的文本从一种语言…...
tryhackme——Pre Security(安检前)-Offensive Security(进攻性安全)
这里我用的edge的插件闪击翻译。这里我英语不好,所以用这个可以顺便学习下英语。 任务一:What is Offensive Security?(什么是进攻性安全?) 很简单啊,通过阅读,知道以下哪个选项更能代表您模拟黑客操作…...
人工智能学习之归一化和标准化的区别
归一化与标准化(机器学习核心预处理笔记) 核心前提:机器学习中,特征的量纲(单位)可能差异极大(如:身高cm、体重kg、收入万元),会导致模型(如KNN、…...
别再死记硬背了!用一张图帮你彻底搞懂FC协议栈(从FC-0到FC-4)
用视觉化思维拆解FC协议栈:从物理层到应用层的全景指南 当你第一次接触光纤通道(FC)协议时,那些从FC-0到FC-4的层级、各种端口类型和封装结构是否让你感到头晕目眩?别担心,这篇文章将用全新的视觉化方法&am…...
不只是YOLOv5!详解Windows‘页面文件太小’错误的通用解决思路与内存优化技巧
不只是YOLOv5!详解Windows‘页面文件太小’错误的通用解决思路与内存优化技巧 当你在深夜赶工一个重要的机器学习项目,或是渲染一段4K视频时,突然弹出一个冰冷的错误提示:"页面文件太小,无法完成操作"。这一…...
Logisim新手避坑指南:手把手搞定头歌平台偶校验解码电路(附完整data.circ文件配置)
Logisim新手避坑指南:手把手搞定头歌平台偶校验解码电路 第一次打开Logisim时,那个简陋的界面和密密麻麻的逻辑门可能会让你望而生畏。更不用说还要在头歌平台上完成偶校验解码电路的评测——光是看到"找不到GB2312ROM.circ"的报错就足以让大多…...
今天开课!相关性≠因果,因果推断与机器学习训练营,10天带你写出能“下结论”的论文!
为什么有些人服药后康复,而另一些人却毫无改善?为什么大学学位能改变收入水平?这些如果……会怎样的问题,其实都属于因果推断的范畴。在医疗研究中,许多问题都涉及因果概念,因此因果推断在健康研究领域越来…...
复旦微FM33FR0xx开发板实战:从零构建低功耗电容触摸应用
1. 项目概述:从一块开发板说起最近在捣鼓智能家居的小玩意儿,想找个带触摸功能又够省电的MCU,正好看到了复旦微电子新出的FM33FR0xx系列开发套件。这板子到手玩了一阵,感觉挺有意思,它不单单是块核心板,还配…...
软件开发项目中,如何做好需求沟通与交付管控
在软件项目里,需求沟通与交付管控是决定项目成败的关键环节。很多看似复杂的技术难题,追根溯源都能找到需求理解偏差、交付节奏失控的影子。结合日常项目经验,我梳理了几个关键要点,希望能给同行们一些参考。一、需求沟通…...
CentOS 7服务器部署:NFS共享、Nginx-RTMP流媒体与Qt无GUI环境全攻略
1. 项目概述与核心思路最近在华为云的一台CentOS 7.4 64位服务器版ECS上,完整部署了一套用于音视频处理和后台服务的开发环境。这个环境的核心目标,是为一个需要处理视频流、提供Web服务,并能方便地进行跨机文件共享和Qt程序编译的后台系统打…...
不只是连线:深入理解模拟版图中电阻的‘Segment’与‘M’参数对实际阻值的影响
不只是连线:深入理解模拟版图中电阻的‘Segment’与‘M’参数对实际阻值的影响 在模拟集成电路设计中,电阻作为最基本的无源元件之一,其版图实现往往被初学者视为简单的金属连线问题。然而,当设计从原理图转向物理实现时ÿ…...
联想笔记本BIOS隐藏设置终极解锁指南:3步开启高级功能
联想笔记本BIOS隐藏设置终极解锁指南:3步开启高级功能 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirrors/l…...
