新闻详情

新闻详情

首页 / 资讯中心 / 详情

P45 创建三级类目树形数据结构

发布时间:2026/9/10 13:34:13来源:尧图网络
P45 创建三级类目树形数据结构
1.三级类目实体类创建catagory表的表结构首先一级类目的parent_cid为0二级类目以及三级类目的parent_cid为上一级的cat_idsort字段用于排序.与catagory表对应的实体类package com.atguigu.gulimail.product.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; import java.util.List; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; /** * 商品三级分类 * * author bryan * email bryanliugulimall.com * date 2022-09-24 17:49:33 */ Data TableName(pms_category) public class CategoryEntity implements Serializable { private static final long serialVersionUID 1L; /** * 分类id */ TableId private Long catId; /** * 分类名称 */ private String name; /** * 父分类id */ private Long parentCid; /** * 层级 */ private Integer catLevel; /** * 是否显示[0-不显示1显示] */ TableLogic(value 1, delval 0) private Integer showStatus; /** * 排序 */ private Integer sort; /** * 图标地址 */ private String icon; /** * 计量单位 */ private String productUnit; /** * 商品数量 */ private Integer productCount; JsonInclude(JsonInclude.Include.NON_EMPTY) TableField(exist false) private ListCategoryEntity children; }注意我们要保存每一类对应的子类可以在 CategoryEntity 中新增一个属性 children 进行存放。这里TableField注解用来标识此属性不在数据库表中存在防止 MyBatisPlus 集成的 mapper 误识。2.三级类目查询后台代码实现首先在 CategoryController 中编写处理请求的方法/** * 查出所有分类以及子分类以树形结构组装起来 */ RequestMapping(/list/tree) public R list(){ ListCategoryEntity entities categoryService.listWithTree(); return R.ok().put(data, entities); }categoryService中的listWithTree具体实现Override public ListCategoryEntity listWithTree() { // 1. 查出所有类 ListCategoryEntity entities baseMapper.selectList(null); // 2. 组装成父子的树形结构 ListCategoryEntity level1Menus entities.stream().filter((categoryEntity) - { return categoryEntity.getParentCid() 0; }).map((menu)-{ menu.setChildren(getChildrens(menu, entities)); return menu; }).sorted((menu1, menu2)-{ // 会报空指针异常, 在此要进行处理 return (menu1.getSort() null? 0:menu1.getSort()) - (menu2.getSort() null? 0: menu2.getSort()); }).collect(Collectors.toList()); return level1Menus; } // 递归查找所有菜单的子菜单 private ListCategoryEntity getChildrens(CategoryEntity root, ListCategoryEntity all) { ListCategoryEntity children all.stream().filter(categoryEntity - { return categoryEntity.getParentCid() root.getCatId(); }).map(categoryEntity-{ // 1、找到子菜单 categoryEntity.setChildren(getChildrens(categoryEntity, all)); return categoryEntity; }).sorted((menu1, menu2)-{ // 2、菜单的排序 // 会报空指针异常, 在此要进行处理 return (menu1.getSort() null? 0:menu1.getSort()) - (menu2.getSort() null? 0: menu2.getSort()); }).collect(Collectors.toList()); return children; }
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Element Plus ColorPickerPanel 面板组件完全指南:核心实现、API 与实战用法 2026/9/10 13:33:55

Element Plus ColorPickerPanel 面板组件完全指南:核心实现、API 与实战用法

Element Plus ColorPickerPanel 面板组件完全指南:核心实现、API 与实战用法 【免费下载链接】element-plus 🎉 A Vue.js 3 UI Library made by Element team 项目地址: https://gitcode.com/GitHub_Trending/el/element-plus 导读:Col…

阅读更多 →
日志分级设计:从DEBUG到ERROR,验证日志的价值挖掘 2026/9/10 13:33:55

日志分级设计:从DEBUG到ERROR,验证日志的价值挖掘

日志分级设计:从DEBUG到ERROR,验证日志的价值挖掘 一个被日志救了的故事: 「有段时间三个店验证频率莫名翻倍,找不到原因。翻日志才发现——那周我把监控频率调高了,采集请求密集了一倍。降回原频,两天后验…

阅读更多 →
Vibe-Trading 数据接入实战:用 Tushare sge_daily 接口获取上海黄金交易所现货合约日行情 2026/9/10 13:33:55

Vibe-Trading 数据接入实战:用 Tushare sge_daily 接口获取上海黄金交易所现货合约日行情

Vibe-Trading 数据接入实战:用 Tushare sge_daily 接口获取上海黄金交易所现货合约日行情 【免费下载链接】Vibe-Trading "Vibe-Trading: Your Personal Trading Agent" 项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading 本文以 Vib…

阅读更多 →
Python文档字符串(Docstring)规范与最佳实践 2026/9/10 13:33:55

Python文档字符串(Docstring)规范与最佳实践

1. Python文档字符串(Docstring)的核心价值与常见误区刚接触Python时,我像大多数人一样忽略了文档字符串的重要性——直到接手一个没有注释的遗留项目,花了整整两周才理清函数间的调用关系。Docstring不仅是代码的说明书,更是团队协作的润滑剂…

阅读更多 →
Milvus向量数据库实战:从部署到与大模型集成 2026/9/10 13:33:55

Milvus向量数据库实战:从部署到与大模型集成

1. 项目背景与核心价值最近在折腾大模型应用开发时,发现向量数据库是个绕不开的基础设施。Milvus作为当前最热门的开源向量数据库之一,在RAG(检索增强生成)场景中表现尤为突出。实际部署过程中发现,网上教程要么过于简…

阅读更多 →
OSG Geometry模块详解:3D图形编程核心与实践 2026/9/10 13:30:54

OSG Geometry模块详解:3D图形编程核心与实践

1. 项目概述今天我们来深入探讨OSG(OpenSceneGraph)中的Geometry模块,这是3D图形编程中最基础也最核心的部分。Geometry负责定义和绘制各种几何形状,从简单的三角形到复杂的3D模型都离不开它。在实际项目中,几何体绘制直接决定了场景的视觉效…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞