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

树形表/树形数据接口的开发

数据表格式

在这里插入图片描述

需要返回的json格式

点击查看json数据
 
 [{"childrenTreeNodes" : [{"childrenTreeNodes" : null,"id" : "1-1-1","isLeaf" : null,"isShow" : null,"label" : "HTML/CSS","name" : "HTML/CSS","orderby" : 1,"parentid" : "1-1"},{"childrenTreeNodes" : null,"id" : "1-1-5","isLeaf" : null,"isShow" : null,"label" : "AngularJS","name" : "AngularJS","orderby" : 5,"parentid" : "1-1"}],"id" : "1-1","isLeaf" : null,"isShow" : null,"label" : "前端开发","name" : "前端开发","orderby" : 1,"parentid" : "1"},{"childrenTreeNodes" : [{"childrenTreeNodes" : null,"id" : "1-2-1","isLeaf" : null,"isShow" : null,"label" : "微信开发","name" : "微信开发","orderby" : 1,"parentid" : "1-2"},{"childrenTreeNodes" : null,"id" : "1-2-2","isLeaf" : null,"isShow" : null,"label" : "iOS","name" : "iOS","orderby" : 2,"parentid" : "1-2"},{"childrenTreeNodes" : null,"id" : "1-2-8","isLeaf" : null,"isShow" : null,"label" : "其它","name" : "其它","orderby" : 8,"parentid" : "1-2"}],"id" : "1-2","isLeaf" : null,"isShow" : null,"label" : "移动开发","name" : "移动开发","orderby" : 2,"parentid" : "1"}]

数据对应的模型类要封装树形结构的子节点

@Data
public class CourseCategoryTreeDto extends CourseCategory implements Serializable {List<CourseCategoryTreeDto> childrenTreeNodes;
}

层级固定时

树的层级固定时,可以使用表的自链接查询。

比如只查询二级分类

selectone.id            one_id,one.name          one_name,one.parentid      one_parentid,one.orderby       one_orderby,one.label         one_label,two.id            two_id,two.name          two_name,two.parentid      two_parentid,two.orderby       two_orderby,two.label         two_labelfrom course_category oneinner join course_category two on one.id = two.parentid

层级不固定时

使用MySQL的递归实现,使用with语法

with recursive t1 as (select * from course_category where id='1'union allselect t2.* from course_category t2inner join t1on t1.id=t2.parentid)
select * from t1

MySQL为了避免无限递归默认递归次数为1000,可以通过设置cte_max_recursion_depth参数增加递归深度,还可以通过max_execution_time限制执行时间,超过此时间也会终止递归操作。

MySQL递归相当于在存储过程中执行若干次sql语句,java程序仅与数据库建立一次链接执行递归操作,所以只要控制好递归深度,控制好数据量性能就没有问题。

    @AutowiredCourseCategoryMapper categoryMapper;@Overridepublic List<CourseCategoryTreeDto> queryTreeNodes(String id) {List<CourseCategoryTreeDto> list = categoryMapper.selectTreeNodes(id);//将返回的数据行转map,用于后面添加子节点使用Map<String, CourseCategoryTreeDto> map = list.stream().filter(item -> !id.equals(item.getId())).collect(Collectors.toMap(key -> key.getId(), value -> value));//最终返回的listList<CourseCategoryTreeDto> res = new ArrayList<>();list.stream().filter(item -> !id.equals(item.getId())).forEach(item -> {// 如果当前节点的父节点是根节点,直接添加当前节点到结果集if (item.getParentid().equals(id)) {res.add(item);}//找到当前节点的父节点,把当前节点添加到父节点的孩子中CourseCategoryTreeDto categoryTreeDto = map.get(item.getParentid());if (categoryTreeDto != null) {if (categoryTreeDto.getChildrenTreeNodes() == null) {List<CourseCategoryTreeDto> childrenNodes = new ArrayList<>();categoryTreeDto.setChildrenTreeNodes(childrenNodes);}categoryTreeDto.getChildrenTreeNodes().add(item);}});return res;}

相关文章:

树形表/树形数据接口的开发

数据表格式 需要返回的json格式 点击查看json数据 [{"childrenTreeNodes" : [{"childrenTreeNodes" : null,"id" : "1-1-1","isLeaf" : null,"isShow" : null,"label" : "HTML/CSS","na…...

二叉树的镜像--c++【做题记录】

【问题描述】 给定扩展二叉树的前序序列&#xff0c;构建二叉树。 求这课二叉树的镜像&#xff0c;并输出其前序遍历序列。 【输入形式】 输入扩展二叉树的前序序列。 【输出形式】 输出镜像二叉树的前序遍历序列。 【样例输入】 ab##cd##e## 【样例输出】 镜像后二叉树的前序遍…...

redis安裝启动

1、下载redis解压 https://github.com/tporadowski/redis/releases 2、打开cmd&#xff0c;切换到解压的文件夹 3、redis-server.exe redis.windows.conf 启动redis redis可通过命令行输入config set requirepass password和直接修改redis.config文件中修改 requirepass 来设…...

为什么Java中的main方法必须是public static void的?

当我们创建main方法时&#xff0c;首先都是public、都是static&#xff0c;返回值都是void&#xff0c;方法名都是main&#xff0c;入参都是一个字符串数组。 在以上的方法声明中&#xff0c;唯一可以改变的部分就是方法的参数名&#xff0c;我们可以吧args改成任意我们想要使…...

shell的编程方式

文章目录 变量俩种方式第一种方式第二种方式 取消变量数组创建数组获取数组元素的方式 read输出的方式限制输入的方式 流程控制方式for循环输出的方式第一种方式第二种方式while循环输出的方式select选择输出的方式 判断方式判断的四种方式第一种方式第二种方式第三种方式 算术…...

前端面试项目细节重难点(已工作|做分享)想(八)

面试官&#xff1a;请你讲讲你在该项目中遇到的印象深刻的问题是什么&#xff1f; 答&#xff1a;我的回答&#xff1a;该项目的实现过程中我确实遇到了问题&#xff1a;【我会给大家整理回答思路和角度&#xff0c;那那么遇到这样的问题也可借鉴这种思路进行阐述】 第一层面…...

Loguru,一个 Python 日志神器

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 一个简单的库,也许能够开启我们的智慧之门, 一个普通的方法,也许能在危急时刻挽救我们于水深火热, 一个新颖的思维方式,也许能激发我们无尽的创造力, 一个独特的技巧,也许能成为我们的隐形盾牌…… 神奇的 Pyth…...

C++ 反转单词

在C中&#xff0c;反转一个字符串中的单词&#xff08;单词之间通过空格分隔&#xff0c;但单词内部保持原有顺序&#xff09;可以通过以下步骤实现&#xff1a; 找到字符串中的所有单词&#xff0c;这可以通过查找空格来实现。将单词存储在一个容器中&#xff08;例如 std::v…...

Apache Doris 基础 -- 数据表设计(表索引)

1、索引概述 索引用于帮助快速过滤或搜索数据。目前&#xff0c;Doris支持两种类型的索引:内置智能索引和用户创建的二级索引。 内置智能索引 排序键和前缀索引:Apache Doris基于排序键以有序的方式存储数据。它为每1024行数据创建一个前缀索引。索引中的键是当前1024行组的…...

资源描述框架的用途及实际应用解析

什么是RDF&#xff1f; RDF代表 资源描述框架 RDF是用于描述网络资源的框架 RDF旨在被计算机阅读和理解 RDF并非设计用于供人阅读 RDF以 XML 编写 示例 描述购物商品的属性&#xff0c;如价格和可用性描述网络活动的时间表描述网页的信息&#xff08;内容&#xff0c;作者&a…...

工业级物联网边缘网关解决方案-天拓四方

随着工业4.0时代的到来&#xff0c;越来越多的企业开始寻求智能化升级&#xff0c;以提高生产效率、降低运营成本并增强市场竞争力。然而&#xff0c;在实际的转型升级过程中&#xff0c;许多企业面临着数据孤岛、设备兼容性差、网络安全风险高等问题&#xff0c;这些问题严重制…...

认识微服务,认识Spring Cloud

1. 介绍 本博客探讨的内容如下所示 什么是微服务&#xff1f;什么是springcloud&#xff1f;微服务和springcloud有什么关系&#xff1f; 首先&#xff0c;没有在接触springcloud之前&#xff0c;我写的项目都是单体结构&#xff0c; 但随着网站的用户量越来越大&#xff0c;…...

电脑设置密码怎么设置?让你的电脑更安全!

在如今信息化的社会中&#xff0c;保护个人电脑的安全至关重要。设置密码是最基本的电脑安全措施之一&#xff0c;它可以有效防止未经授权的访问和保护个人隐私&#xff0c;可是电脑设置密码怎么设置&#xff1f;本文将介绍三种设置电脑密码的方法&#xff0c;帮助您加强电脑的…...

搜维尔科技:SenseGlove Nova2使用主动接触反馈来模拟手掌的感觉,结合力反馈和振动触觉反馈,使其成为市场上第一款具有手掌反馈的无线触觉手套

SenseGlove Nova2使用主动接触反馈来模拟手掌的感觉&#xff0c;结合力反馈和振动触觉反馈&#xff0c;使其成为市场上第一款具有手掌反馈的无线触觉手套。 搜维尔科技&#xff1a;SenseGlove Nova2使用主动接触反馈来模拟手掌的感觉&#xff0c;结合力反馈和振动触觉反馈&…...

基于Python的实验室管理系统的设计与实现(论文+源码)_kaic

摘 要 随着实验室设备越来越多&#xff0c;实验室及其设备管理工作变得越来越繁重&#xff0c;还存在些管理模式仍旧处于手工管理模式和一些抢占实验室的不文明现象&#xff0c;传统的手工模式已经满足不了日益增长的管理需求&#xff0c;而本系统摒弃传统模式&#xff0c;开启…...

Windows系统WDS+MDT网络启动自动化安装

Windows系统WDS+MDT网络启动自动化安装 适用于在Windows系统上WDS+MDT网络启动自动化安装 1. 安装准备 1.下载windows server 2019、windows 10 pro的ISO文件,并安装好windows server 2019 2.下载windows 10 2004版ADK及镜像包 1.1 安装平台 Windows 111.2. 软件信息 软件…...

Apple开发者证书创建完整过程

1.创建CSR文件: 打开钥匙串访问程序 选择从证书颁发机构请求 创建证书 保存CSR文件到桌面 成功如下: 开始创建证书: 选择...

for深入学习

目录 练习&#xff1a; 例1&#xff1a; 求解0-100中整除3的数有哪些 例2&#xff1a; 求0-100中含数字9个个数 作业&#xff1a; 练习&#xff1a; 例1&#xff1a; 求解0-100中整除3的数有哪些 代码&#xff1a; #include<stdio.h> int main() {printf("整…...

引用(C++)和内联函数

前言&#xff1a;本文主要讲解C语法中引用如何使用和使用时的一些技巧 基本语法 引用就是取别名 #include <iostream> using namespace std; int main() {int a 10;int& b a;//给a取别名为bcout << a << endl;cout << b << endl;return 0…...

【stm32/CubeMX、HAL库】swjtu嵌入式实验七 ADC 实验

相关电路与IO引脚 注意&#xff1a;串口打印重定向后使用printf打印需要在keil里勾选 Use MicroLIB &#xff0c;否则会卡住。 参看&#xff1a;https://zhuanlan.zhihu.com/p/565613666 串口重定向&#xff1a; /* USER CODE BEGIN Includes */#include <stdio.h>//…...

Elasticsearch-PHP异步搜索终极指南:如何实现高性能搜索应用

Elasticsearch-PHP异步搜索终极指南&#xff1a;如何实现高性能搜索应用 【免费下载链接】elasticsearch-php Official PHP client for Elasticsearch. 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearch-php Elasticsearch-PHP是官方PHP客户端&#xff0c;为…...

SEO 实战培训班在哪里_SEO 优化师培训在哪里

SEO 实战培训班在哪里_SEO 优化师培训在哪里 在当今数字化时代&#xff0c;网站的流量和排名直接关系到企业的生存和发展。这就是为什么越来来越多的企业和个人希望掌握SEO优化技能&#xff0c;成为一名优秀的SEO优化师。SEO 实战培训班在哪里呢&#xff1f;SEO 优化师培训在哪…...

ReactNative项目OpenHarmony三方库集成实战:react-native-render-html

欢迎加入开源鸿蒙跨平台社区&#xff1a;https://openharmonycrossplatform.csdn.net 项目基于 RN 0.72.90 开发 &#x1f4cb; 前言 在移动应用开发中&#xff0c;HTML 内容渲染是一项常见需求&#xff0c;特别是在新闻资讯、富文本编辑、邮件展示等场景中。React Native 原…...

AI辅助开发新体验:描述你的健康应用构想,快马一键生成Compose项目代码

最近在尝试开发一个Android端的个人健康数据追踪应用&#xff0c;发现用传统方式从零开始写代码特别耗时。正好体验了InsCode(快马)平台的AI辅助开发功能&#xff0c;整个过程变得轻松多了。下面分享下这个健康应用的实现思路和关键模块设计。 整体架构设计 采用Clean Architec…...

低成本自动化:OpenClaw+Gemma-3-12b-it替代Zapier的5个场景

低成本自动化&#xff1a;OpenClawGemma-3-12b-it替代Zapier的5个场景 1. 为什么选择OpenClawGemma替代Zapier 作为一个长期使用Zapier的自动化爱好者&#xff0c;我最近开始尝试用OpenClawGemma-3-12b-it组合来替代部分Zapier工作流。这个转变源于两个痛点&#xff1a;一是Z…...

实战踩坑:antv G6与vite集成时的兼容性难题与解决方案

1. 当antv G6遇上vite&#xff1a;开发环境与生产环境的"薛定谔式报错" 最近接手一个数据可视化项目&#xff0c;需要用到antv G6这个流程图工具库。开发阶段一切顺利&#xff0c;页面渲染流畅得像德芙巧克力。但当我用vite打包准备上线时&#xff0c;控制台突然抛出…...

libcimbar视觉传输工具实战指南:跨设备无网络数据传输解决方案

libcimbar视觉传输工具实战指南&#xff1a;跨设备无网络数据传输解决方案 【免费下载链接】libcimbar Optimized implementation for color-icon-matrix barcodes 项目地址: https://gitcode.com/GitHub_Trending/li/libcimbar 一、核心价值解析&#xff1a;突破网络限…...

Redacted Font:企业级产品设计的终极保密字体应用指南

Redacted Font&#xff1a;企业级产品设计的终极保密字体应用指南 【免费下载链接】redacted-font Keep your wireframes free of distracting Lorem Ipsum. 项目地址: https://gitcode.com/gh_mirrors/re/redacted-font Redacted Font是一款专为产品设计师和开发者设计…...

随着AI和电商重塑消费者购买行为,全球美妆市场增长10%

随着数字优先和AI影响下的全球电商加速发展&#xff0c;线上销售额增速达到线下门店的6倍 全球消费者情报领军企业NielsenIQ (NYSE:NIQ)今日发布《2026年美妆行业现状报告》。报告显示&#xff0c;全球美妆市场同比增长10%&#xff0c;电商销售额增速达到线下门店的6倍。该结果…...

mtkclient-gui技术指南:联发科设备深度控制与系统修复实战

mtkclient-gui技术指南&#xff1a;联发科设备深度控制与系统修复实战 【免费下载链接】mtkclient-gui GUI tool for unlocking bootloader and bypassing authorization on Mediatek devices (Not maintained anymore) 项目地址: https://gitcode.com/gh_mirrors/mt/mtkclie…...