谷粒商城day31 -商品服务-API-三级分类-查询-递归树形结构数据获取

Vivado实战:AXI转PCIe IP核配置全流程(含性能优化技巧) 本文详细介绍了在Vivado环境中配置AXI转PCIe IP核的全流程,包括工程准备、IP核参数设置、BAR空间配置、中断系统优化以及TLP传输效率提升等关键步骤。特别分享了经过验证的性能优化技巧,帮助开发者显著提升PCIe链路的吞吐量和稳定性,适用于视频采集、高速数据记录等应用场景。 阅读详情

1.导入分类数据

把资料附带的sql执行下

2.Controller层代码

CategoryController类内添加如下代码
 /**
     * 获取树形菜单
     */
    @RequestMapping("/list/tree")
    public  R listWithTree(){
        List<CategoryEntity>  categoryEntityList =  categoryService.listWithTree();
        return R.ok().put("page", categoryEntityList);
    }

2.entity层代码

CategoryEntity类内添加如下代码  因为在表中不存在该属性,所以加如下注解,用来存子分类
@TableField(exist = false)
	private List<CategoryEntity> children;

3.service层代码

CategoryService类内添加如下代码
List<CategoryEntity> listWithTree();
CategoryServiceImpl类内添加如下代码

大致的操作就是先获取1级分类获取子分类并递归设置进去

    @Override
    public List<CategoryEntity> listWithTree() {
        List<CategoryEntity> categoryEntityList = baseMapper.selectList(null);
        //获取所有父级菜单

        List<CategoryEntity> level1Menus = categoryEntityList.stream().filter(categoryEntity ->
                categoryEntity.getParentCid() == 0
        ).map((menu) -> {
            menu.setChildren(getChildren(menu, categoryEntityList));
            return menu;
        }).sorted((menu1,menu2) ->{
            return (menu1.getSort()==null?0:menu1.getSort()) - (menu2.getSort()==null?0:menu2.getSort());
        }).collect(Collectors.toList());

        return level1Menus;
    }

    private List<CategoryEntity> getChildren(CategoryEntity menu, List<CategoryEntity> categoryEntityList) {

        List<CategoryEntity> collect = categoryEntityList.stream().filter(categoryEntity ->
                categoryEntity.getParentCid() == menu.getCatId()
        ).map((child) -> {
            child.setChildren(getChildren(child, categoryEntityList));
            return child;
        }).sorted((child1, child2) -> {
            return (child1.getSort()==null?0:child1.getSort()) - (child2.getSort()==null?0:child2.getSort());
        }).collect(Collectors.toList());

        return  collect;
    }

关于jdk1.8 stream可以看看

https://blog.youkuaiyun.com/leehsiao/article/details/91354163

【信创-k8s】银河麒麟V10国防版+鲲鹏/飞腾(arm64架构)在线/离线部署k8s1.30+kubesphere 银河麒麟作为国家核高基专项的重要成果,国防版凭借其卓越的安全性和可靠性,已成为军工领域的首选操作系统。之前我们在适配麒麟V4国防版的过程中已发现诸多安全性要求,而麒麟V10国防版在安全防护等级上又达到了更高的级别。本文将主要演示离线部署,因为军工项目基本不会出现联网场景。即使在线,也可以按离线方式部署,且离线部署由于有私有仓库,不会存在镜像获取不到和丢失情况。 阅读详情

相关推荐

保姆级教程:手把手教你给联想System x 3650 M5服务器配置RAID 5并U盘装系统

本文提供联想System x 3650 M5服务器配置RAID 5并U盘安装系统的详细教程,特别适合零基础运维人员。从准备工作、RAID 5配置到U盘引导和系统安装,涵盖全流程关键步骤与常见问题解决方案,帮助用户高效完成服务器部署。

weixin_42535703的博客 358

【python】从python中调用matlab函数

【python】从python中调用matlab函数

weixin_44502754的博客 1988

保姆级教程:用Altium Designer 24从零画一块PCB(附完整库文件与避坑清单)

本文提供了一份详细的Altium Designer 24(AD24)PCB设计教程,从工程创建到最终文件输出,涵盖元件库管理、原理图设计、PCB布局布线等全流程。特别适合初学者,包含STM32最小系统板的实战案例,附完整库文件和避坑清单,帮助用户快速掌握AD24的核心功能与技巧。

weixin_27697385的博客 249

在python中调用matlab函数

最近,在做一个信号分选的项目,已有代码matlab算法,但是项目要求用python调用分装,工程同时涉及到了matlab和python两种语言,不太想进行手工的统一(主要是不会,并且统一的过程太麻烦),这就涉及到如何将两种程序整合到一起进行使用,也就是在python中调用matlab函数。

Charlotte_lucky的博客 2962

深入解析STM32官方库:.c/.h文件功能与应用场景

本文深入解析了STM32官方库中.c和.h文件的核心功能与应用场景。详细剖析了stm32f10x.h、启动文件、外设驱动文件等关键组件的作用,并通过LED闪烁实战演示了如何构建工程、配置文件和调用库函数。文章旨在帮助开发者理解官方库的架构,掌握高效使用技巧,从而降低STM32开发门槛,提升开发效率与代码质量。

weixin_29189377的博客 353

科研绘图神器Origin2024最新中文版安装教程:5分钟搞定所有配置

本文提供了一份详细的Origin2024中文版安装与配置指南。从系统环境核查、安装包获取验证,到分步安装、语言切换及关键初始设置,手把手教你5分钟完成所有基础配置。同时,指南还分享了首次启动后的个性化设置与高效绘图工作流,助你快速上手这款科研绘图神器,提升数据处理与图表制作效率。

weixin_29247219的博客 1041

jq&&ztree树形下拉框

//样式自行定义 <input id="orgName" class="org-select u-input input5" onclick="showTree()" readonly> <!-- 模拟select点击框 以及option的text值显示--> <i class="trg" style="position: absolute;"></i> <!-- 模拟select右侧倒三角 --> <input id="or.

xu_xu_0924的博客 1235

Android 跨进程通信-(一)Binder概念引入

前言 主要对Android中的跨进程通信进行总结下,这篇先梳理下里面的涉及的一些概念 一 多进程 1.进程与线程 进程:系统中正在运行的一个应用程序,某个程序一旦运行就是一个进程,是资源分配的最小单位; 线程:程序执行的最小单位,包含在进程中,一个进程可以包含多个线程。 2.Android应用中的多进程 (1)dalivk虚拟机 Android系统的底层任务管理以及驱动都是基于Linux系统。一个Android系统其实就是一个Linux系统,通过adb shell进入连接的手机,就可以看到Li

nihaomabmt的专栏 1103

jq封装树形下拉选择框组件

jq封装树形下拉选择框组件

GongWei_的博客 5343

s9keaz128 UART Bootloader 单片机篇(上)

网络上充斥着各种各样的串口升级方案,基本都是基于Y-Mode协议下载。采用这种升级方案学习还是可以,用在产品上还是有点欠缺。如下载完成后,需要把时间发送到设备就不好搞了。如下这个设备返回的信息,最后一项就是固件更新时间。固件名称: KEA128编译时间固件版本: 1.0.3硬件版本: 1.0.3产品序列号功能名称: App固件更新时间串口升级演示视频。

一人科技 1795

LabVIEW实战:3步搞定Excel模板数据填充(附完整VI源码)

本文提供了一个高效的LabVIEW Excel报表自动化方案,通过使用命名区域定位和动态文件管理,实现数据的精准、动态填充。文章详细阐述了如何构建可复用的数据填充引擎,包括文本、表格数据及图表的写入,并分享了主程序流程、错误处理及性能优化等进阶技巧,帮助工程师彻底摆脱手动操作,提升工作效率。

weixin_29233333的博客 276

结合zTree实现 Js/jQuery/Html 下拉树(下拉框嵌入树结构)

一、效果图 二、项目结构 三、使用方法 (1)引入 jQuery 包,下载地址 (2)引入 zTree 包,下载地址 (3)引入 tree-select.js (4)$("#id").treeSelect(data); 一句话搞定 四、实现源码 (1)tree-select.js,样式什么的按需自改 /** * 下拉树 * 务必先引入 jQuery 和 zTree */ (function ($) { function TreeSelect() ...

liumenglin1994的博客 1338

C++ bitset总结

数据结构bitset 术语:某1位置位是置1,某一位复位是某一位清零。 文章目录数据结构bitset一、3种初始化方式二、位访问三、位操作四、 位集操作总结实战练习 一、3种初始化方式 bitset<32> tmp; //默认构造函数,默认全0。 bitset<32> tmp(-1); //从整形数构造 bitset<32> tmp("101"); //从包含1和0的字符串构造 二、位访问 bitset<32> tmp(256)

qq_43807092的博客 721

matlab的代码在python可以运行吗_MATLAB与Python混合编程

本文将向您展示如何一起(和平且和谐地!)使用MATLAB和Python。我们将假定您使用这两种语言的初学者背景,并提供指向更高级主题的链接。两种语言各自有非常出色的算法,因此可以共享案例。例如,MATLAB和Python用于构建此空气质量预测应用程序和情感分析算法。两种语言经常一起用于AI应用程序(以至于通过MATLAB,ONNX和TensorFlow进行深度学习网络的直接导入和导出)。基础首先,...

weixin_39559895的博客 3665

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

树形下拉框,结合ztree

树结构的下拉框

HUSKle的博客 744

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python调用MATLAB程序

为纪念2024年1月16日浪费的4个小时,而创作本教程,以明晰如何在Python程序中顺利调用MATLAB。关键字:Python调用MATLAB,matlab.engine,MATLAB Engine for Python没心情总结…

qq_45676483的博客 7952

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

zTree(二)树状图下拉框

需求 添加、修改终端需要选择组织,组织是多级架构(树状图显示)。 思路 1、因为下拉框需要树状图显示,所以排除使用select做下拉框,改用input 模拟下拉框 2、树状图采用zTree插件 开工 1、布局 &amp;amp;lt;script src=&amp;quot;https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script

天空影 1万+

基于jquery和jstree的组合下拉树的插件开发

做前端的过程中,慢慢发现,有些记忆力是靠不住的,是需要用东西来记录下来的。插件的开发是当初在公司的时候有一个需求:需要一个输入框下拉出来一个树形结构,百度看了看别人的插件,没找到符合我自己需求的,当初看了一下ztree的的下拉树,感觉不太符合,于是想自己写一个。因为公司前期采用require.js 的amd一、所以开头进行判断是不是异步的加载机制;(function(factory) { ...

Nyist_FlyingRookie的博客 2044

在 Python中调用Matlab运行.m文件方法

工作原因需要把原来用matlab写的代码转到python里调用。在我的这篇博文里直接转出来的.py文件运行的时候matlab特有的函数还是没法转过来,所以又翻了好多资料,现在记录一下解决方案。

weixin_52194015的博客 1430

jquery ztree 在树节点后面加复选下拉框

在ztree 3.5基础上改的,复选下拉框使用的multiselect,点击不同的父节点复选下拉框跟着移动,例子下载地址:http://dl5.youkuaiyun.com/fd.php?i=701151084502758&s=f142c8a2f4785f51f161a29dbfaa64c0,文件路径demo\cn\super\radio_checkbox_mulitselect.html,打开后组合功能演示

xulei_19850322的专栏 8725

ztree下拉树(带勾选框)

Ztree下拉树(带勾选框) 例子样式 下拉带勾选框且父子节点联动多选 代码(带勾选框) html 第一个input框时是存放勾选数据的id 第二个input框存放勾选数据的name 第三个ul是展示ztree树 <div class="pull-right" style="margin-right: 10px"> <input id="input_fieldIds" name="fieldIds" hidden> <input id="input_fiel

qq_44796977的博客 1809

jquery树形插件zTree使用示例--入门

最近在做宿舍管理系统小型项目,在进行用户角色设定、角色资源(菜单)设定的时候,需要使用树行结构进行动态设置。使用到jquery树形结构插件zTree。整理一下入门级的使用zTree的方法。 1、通过官网下载demo或者下载zTree相关的插件; 官网地址:zTree官网 2、页面文件引入需要的zTree插件: 主要引入的对象有:zTreeStyle.css、 jquery-1.4.4

yaoyy09的专栏 1万+

jquery封装树形下拉选择组件

style样式:.treeBox{width: 400px; border: 1px solid black; margin: 0px auto; text-align: center; padding: 15px; } .tree{width: 200px; margin: 0px auto;...

qq_35504206的博客 1586

jquery ztree实现下拉树形框,json数据

公司最近的项目需要用到树形下拉框,在网上找了挺多yuan

qinshang007的专栏 6524

Python调用Matlab教程

对于matlab中已经有很多程序,不想搬移到python的一个方法。

weixin_51724215的博客 7336

jquery简单实现树形控件

利用jquery简单实现树形控件

adminguojieBin的博客 1641
上一篇: 谷粒商城day30 -Vue-整合ElementUI快速开发
下一篇: 谷粒商城day32 -商品服务-API-三级分类-配置网关路由与路径重写
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我才是真的封不觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值