java根据前端所要格式返回树形3级层级数据

一、业务分析,根据前端需求返回如下数据格式

 

二、后端设计数据类型VO

/*** @author TTc* @version 1.0* @date 2024/2/15 16:47*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Catalog2Vo {/*** 一级父分类的 id*/private String catalog1Id;/*** 三级子分类*/private List<Category3Vo> catalog3List;private String id;private String name;/*** 三级分类 vo* 这里是一个内部类,记得要用public方便外部new出这个对象*/@Data@AllArgsConstructor@NoArgsConstructorpublic static class Category3Vo {/*** 父分类、二级分类 id*/private String catalog2Id;private String id;private String name;}
}

三、代码实现

1.编写Controller

//返回 json 数据@GetMapping(value = "/index/catalog.json")@ResponseBodypublic Map<String, List<Catalog2Vo>> getCatalogJson() {Map<String, List<Catalog2Vo>> catalogJson =categoryService.getCatalogJson();return catalogJson;}

2.编写Service

Map<String, List<Catalog2Vo>> getCatalogJson();@Overridepublic Map<String, List<Catalog2Vo>> getCatalogJson() {// 查询所有的分类List<CategoryEntity> selectList = this.baseMapper.selectList(null);// 所有1级分类信息List<CategoryEntity> level1Categorys = getLevel1Categorys();// 循环所有的1级分类,设置每个1级分类下面的二级分类和三级分类信息Map<String,List<Catalog2Vo>>jsonMap=level1Categorys.stream().collect(Collectors.toMap(k -> k.getId().toString(), v -> {// 初始化二级分类信息// 查询当前1级分类下的2级分类// 当前一级分类下的所有二级分类List<CategoryEntity> categories2Level =getCategoriesByParentId(selectList, v.getId());List<Catalog2Vo> catalog2Vos =categories2Level.stream().map(category2Level -> {// 设置1级分类idCatalog2Vo catalog2Vo = new Catalog2Vo(v.getId().toString(), null,category2Level.getId().toString(), category2Level.getName());
//          catalog2Vos.add(catalog2Vo);// 当前二级分类下的所有三级分类List<CategoryEntity> categories3Level = getCategoriesByParentId(selectList, category2Level.getId());// 查询当前2级分类下的3级分类List<Catalog2Vo.Category3Vo>category3VoList=categories3Level.stream().map(category3Level -> {// 初始化当前二级分类下的三级分类信息Catalog2Vo.Category3Vocategory3Vo=new Catalog2Vo.Category3Vo(category2Level.getId().toString(),category3Level.getId().toString(), category3Level.getName());return category3Vo;}).collect(Collectors.toList());// 设置当前二级分类下的所有三级分类集合catalog2Vo.setCatalog3List(category3VoList);return catalog2Vo;}).collect(Collectors.toList());return catalog2Vos;}));return jsonMap;}

3、结果展示

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/689587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 12 中新增的八大功能你都知道吗?

一、主构造函数 在 Visual Studio 2022 版本 17.6 预览版 2 中引入。 从 C# 12 开始&#xff0c;可以在类和结构中声明主构造函数。主构造函数参数都在类的整个主体的范围内。为了确保显式分配所有主构造函数参数&#xff0c;所有显式声明的构造函数都必须使用 this() 语法调用…

SSL证书要钱吗?SSL证书一定要安装吗?

为了保护网站的数据安全和用户隐私&#xff0c;越来越多的网站开始采用SSL证书来加密数据传输。那么&#xff0c;SSL证书到底是否需要收费呢&#xff1f;又是否一定要安装呢&#xff1f;本文将从专业角度为您解答这些问题。 首先&#xff0c;我们来了解一下什么是SSL证书。SSL…

怎样解决恢复VPS数据信息?

对于服务器来说其中的数据信息是十分重要的内容&#xff0c;一旦出现数据丢失或损坏&#xff0c;就会对企业造成巨大的损失&#xff0c;所以备份是非常重要的&#xff0c;那么在使用VPS时我们怎样能够恢复其中的数据信息呢&#xff1f; 一、手动备份 其中比较简单快速的备份方…

CPU是如何工作的?什么是冯·诺依曼架构和哈弗架构?

《嵌入式工程师自我修养/C语言》系列——CPU是如何工作的&#xff1f;什么是冯诺依曼架构和哈弗架构&#xff1f; 一、CPU内部结构及工作原理1.1 CPU的结构1.2 CPU工作流程举例 二、计算机体系结构2.1 冯诺依曼架构2.2 哈弗架构 三、总结 快速学习嵌入式开发其他基础知识&#…

《源代码》:穿越思考的时空之旅

计算机专业必看的几部电影 计算机专业必看的几部电影&#xff0c;就像一场精彩的编程盛宴&#xff01;《黑客帝国》让你穿越虚拟世界&#xff0c;感受高科技的魅力&#xff1b;《社交网络》揭示了互联网巨头的创业之路&#xff0c;《源代码》带你穿越时间解救世界&#xff0c;…

error: src refspec main does not match any解决办法

一、问题描述&#xff1a; 用GitHub Actions自动部署Hexo&#xff0c;到了最关键的一步&#xff1b;突然报错&#xff1a;error: src refspec main does not match any 1、错误一&#xff1a; main分支应填写为master分支&#xff1b;但是只改这里也会报其他错误 2、错误二&a…

mqtt 协议的概念和理解

一、概述 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅&#xff08;publish/subscribe&#xff09;模式的”轻量级”通讯协议&#xff0c;该协议构建于TCP/IP协议上&#xff0c;由IBM在1…

统计zabbix指定日期内的告警数量

问题描述&#xff1a; 知名企业A公司的运维人员小智,需要对zabbix发生的告警数量进行统计。 解决方案&#xff1a; 1、数据库查询方案&#xff0c;调整时间范围即可查询告警相应数据&#xff1a; 查询最近30天zabbix告警数据 SELECTa.hostid ,a.host,a.name AS hostnname,b.na…

【C项目】无头单向不循环链表

简介&#xff1a;本系列博客为C项目系列内容&#xff0c;通过代码来具体实现某个经典简单项目 适宜人群&#xff1a;已大体了解C语法同学 作者留言&#xff1a;本博客相关内容如需转载请注明出处&#xff0c;本人学疏才浅&#xff0c;难免存在些许错误&#xff0c;望留言指正 作…

Rabbitmq入门与应用(五)-延迟队列的设计与实现

延迟队列设计 在开发过程中涉及到延迟队列的应用&#xff0c;例如订单生成后有30分钟的付款时间&#xff0c;注册是有60秒的邮件或者短信的发送读取时间等。 常规使用rabbitmq设计延迟队列有两种方式 使用创建一个延迟队列阻塞消息使用延迟队列插件 Dead Letter Exchanges —…

chatgpt的大致技术原理

当然可以&#xff0c;让我们从技术层面更详细地探讨一下ChatGPT的工作原理。 数据收集与预处理&#xff1a; 数据收集&#xff1a;ChatGPT首先会从各种来源&#xff08;如网页、新闻、书籍等&#xff09;收集大量的文本数据。这些数据为模型提供了丰富的语言模式和表达方式&a…

Linux——信号(2)

在上一张博客我们介绍了Linux中信号的概念和信号是如何产生的&#xff0c;虽然信号 有多种产生方式&#xff0c;但是最终只能由操作系统给对应进程发送特定信号。现在 我将更加规范的介绍Linux中的信号。上一章的遗留问题 我们上一章中在观察信号的默认处理的时候发现终止信号…

《数学建模》专栏导读

文章分类 相关概念入门快速建模相关混合整数线性规划&#xff08;MILP&#xff09;加速技巧数值问题探讨相关问题解决技巧 相关概念入门 文章相关概念离散优化模型的松弛模型线性松弛问题混合整数线性规划MILP问题中增添约束的影响约束的影响 快速建模相关 文章求解器涉及步…

canal监听binlog记录业务数据的变更;canalAdmin对instance做web配置

概述 平时在开发中会通过logback打印一些开发日志&#xff0c;有时也会需要记录一些业务日志&#xff0c;简单的就直接用log记录一下&#xff0c;但是系统中需要记录日志的地方越来越多时&#xff0c;不能每个地方都写一套log记录&#xff1b; 由于平常用的大多都是mysql&…

JavaScript:JSON、三种包装类

JOSN: 我们希望可以将一个对象在不同的语言中进行传递&#xff0c; 以达到通信的目的&#xff0c;最佳方式就是将一个对象转换为字符串的形式 JSON&#xff08;JavaScript Object Notation&#xff09; - JS的对象表示法 - JSON实际上就是一个字符串&#xff0c;它的语法格…

【论文阅读笔记】Contrastive Learning with Stronger Augmentations

Contrastive Learning with Stronger Augmentations 摘要 基于提供的摘要&#xff0c;该论文的核心焦点是在对比学习领域提出的一个新框架——利用强数据增强的对比学习&#xff08;Contrastive Learning with Stronger Augmentations&#xff0c;简称CLSA&#xff09;。以下…

【Jvm】性能调优(上)线上问题排查工具汇总

文章目录 一.互联网概念1.产品闭环和业务闭环2.软件设计中的上游和下游3.JDK运行时常量池 二.CPU相关概念1.查询CPU信息2.CPU利用率&#xff08;CPU utilization&#xff09;和 CPU负载&#xff08;CPU load&#xff09;2.1.如何理解CPU负载2.2.top命令查看CPU负载均值2.3.CPU负…

Pytorch 配置 GPU 环境

1、Pytorch 深度学习跑代码的时候&#xff0c;因为简单的操作不适合cpu运行&#xff0c;我们更习惯用GPU加速代码。 本章将介绍怎么安装pytorch的gpu环境&#xff0c;以及常见的问题 关于conda的安装&#xff0c;参考之前文章&#xff1a;深度学习环境配置&#xff1a;Anaco…

初始树莓派 + VMware17 安装树莓派(Raspberry Pi 4B/5)

文章目录 树莓派入门 VMware17 安装树莓派(Raspberry Pi 4/5B)前言一、树莓派入门指南&#xff1a;从零开始探索树莓派树莓派4B和5对比 二、在VMware Workstation 17上安装树莓派4B/5操作系统&#xff1a;实现强大性能与便捷模拟工具准备开始安装树莓派1.创建一个虚拟机2. 选择…

PyCharm 取消所有断点

PyCharm 取消所有断点 1. Run -> View Breakpoints...2. Python Line Breakpoint3. Remove - DoneReferences 1. Run -> View Breakpoints… 2. Python Line Breakpoint ​​​ 3. Remove - Done References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/