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?(什么是进攻性安全?) 很简单啊,通过阅读,知道以下哪个选项更能代表您模拟黑客操作…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...

spring boot使用HttpServletResponse实现sse后端流式输出消息
1.以前只是看过SSE的相关文章,没有具体实践,这次接入AI大模型使用到了流式输出,涉及到给前端流式返回,所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...
Netty自定义协议解析
目录 自定义协议设计 实现消息解码器 实现消息编码器 自定义消息对象 配置ChannelPipeline Netty提供了强大的编解码器抽象基类,这些基类能够帮助开发者快速实现自定义协议的解析。 自定义协议设计 在实现自定义协议解析之前,需要明确协议的具体格式。例如,一个简单的…...

英国云服务器上安装宝塔面板(BT Panel)
在英国云服务器上安装宝塔面板(BT Panel) 是完全可行的,尤其适合需要远程管理Linux服务器、快速部署网站、数据库、FTP、SSL证书等服务的用户。宝塔面板以其可视化操作界面和强大的功能广受国内用户欢迎,虽然官方主要面向中国大陆…...