返回顶部
首页 > 资讯 > 后端开发 > Python >教你如何使用Java8实现菜单树形数据
  • 187
分享到

教你如何使用Java8实现菜单树形数据

2024-04-02 19:04:59 187人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

Java8实现菜单树形数据 当我们打开京东商城时,左侧的菜单依次分为三级展示,这是如何实现的呢? 本篇暂不讲述前端,只讲述如何使用java8 的lamada表达式实现树形数据的拼装

Java8实现菜单树形数据

当我们打开京东商城时,左侧的菜单依次分为三级展示,这是如何实现的呢?

在这里插入图片描述

本篇暂不讲述前端,只讲述如何使用java8 的lamada表达式实现树形数据的拼装

1.创建菜单表


CREATE TABLE `pms_cateGory`  (
  `cat_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类id',
  `name` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分类名称',
  `parent_cid` bigint(20) NULL DEFAULT NULL COMMENT '父分类id',
  `cat_level` int(11) NULL DEFAULT NULL COMMENT '层级',
  `show_status` tinyint(4) NULL DEFAULT NULL COMMENT '是否显示[0-不显示,1显示]',
  `sort` int(11) NULL DEFAULT NULL COMMENT '排序',
  `icon` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标地址',
  `product_unit` char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '计量单位',
  `product_count` int(11) NULL DEFAULT NULL COMMENT '商品数量',
  PRIMARY KEY (`cat_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1433 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商品三级分类' ROW_FORMAT = Dynamic;

2.创建实体类

其中children用来存放子类


@Data
@TableName("pms_category")
public class CategoryEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	
	@TableId
	private Long catId;
	
	private String name;
	
	private Long parentCid;
	
	private Integer catLevel;
	
	private Integer showStatus;
	
	private Integer sort;
	
	private String icon;
	
	private String productUnit;
	
	private Integer productCount;

	
	@TableField(exist = false)
	private List<CategoryEntity> children;

}

3.实现一级分类

3.1)首先要查询出所有的分类信息entities
3.2)然后对entities过滤查找一级分类,其中一级分的parentId == 0
3.3)设置当前一级分类的子分类
3.4)对一级分类进行排序

代码如下:


public List<CategoryEntity> listWithTree() {
        //1.查询所有分类
        List<CategoryEntity> entities = baseMapper.selectList(null);
        //2.组装
        //2.1) 所到所有的一级类别 ,parentId = 0
        List<CategoryEntity> levelOneMenus = entities.stream()
                .filter(item ->  item.getParentCid() == 0)
                .map(item -> {
                    item.setChildren(this.getChildrens(item, entities));
                    return item;
                })
                .sorted((item1, item2) -> {
                    return (item1.getSort() == null ? 0 : item1.getSort())  - (item2.getSort() == null ? 0 : item2.getSort());
                })
                .collect(Collectors.toList());
        return levelOneMenus;
    }

4.使用递归对子分类再进行树形组装

4.1)首先判断当前的id是否有等于集合中的元素的parentId
4.2)再对当前子分类使用递归设置子分类
4.3)对当前子分类排序
4.4)返回子分类集合

详细代码实现如下:


private List<CategoryEntity> getChildrens(CategoryEntity root, List<CategoryEntity> all){
        List<CategoryEntity> treeMenus = all.stream()
                //如果菜单中的父菜单Id == 当前菜单的id,则说明是子菜单
                .filter(item ->  Objects.equals(item.getParentCid(), root.getCatId()))
                .map(item -> {
                    //递归添加子菜单
                    List<CategoryEntity> childrens = getChildrens(item, all);
                    item.setChildren(childrens);
                    return item;
                })
                //排序
                .sorted((item1, item2) -> {
                    return (item1.getSort() == null ? 0 : item1.getSort())  - (item2.getSort() == null ? 0 : item2.getSort());
                })
                .collect(Collectors.toList());
        return treeMenus;
    }

到此这篇关于教你如何使用Java8实现菜单树形数据的文章就介绍到这了,更多相关Java8实现菜单树形数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 教你如何使用Java8实现菜单树形数据

本文链接: https://lsjlt.com/news/128299.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 教你如何使用Java8实现菜单树形数据
    Java8实现菜单树形数据 当我们打开京东商城时,左侧的菜单依次分为三级展示,这是如何实现的呢? 本篇暂不讲述前端,只讲述如何使用java8 的lamada表达式实现树形数据的拼装...
    99+
    2024-04-02
  • EasyUI如何实现树形功能菜单
    这篇文章给大家分享的是有关EasyUI如何实现树形功能菜单的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。页面展示截图如下:为了实现以上效果,在开始前必须先将环境配置一下。第一步:...
    99+
    2024-04-02
  • Vue组件tree如何实现树形菜单
    这篇文章主要为大家展示了“Vue组件tree如何实现树形菜单”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue组件tree如何实现树形菜单”这篇文章吧。vue...
    99+
    2024-04-02
  • Vue2递归组件如何实现树形菜单
    小编给大家分享一下Vue2递归组件如何实现树形菜单,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果如下图,点击后打开二级菜单,...
    99+
    2024-04-02
  • 如何使用css实现扇形菜单
    这篇文章主要介绍如何使用css实现扇形菜单,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!<!DOCTYPE html><html><head>&l...
    99+
    2024-04-02
  • 怎么使用Vue组件tree实现树形菜单
    本篇内容主要讲解“怎么使用Vue组件tree实现树形菜单”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Vue组件tree实现树形菜单”吧!vue 编写的树形菜单,小巧实用,支持vue1....
    99+
    2023-07-04
  • 怎么使用Vue递归组件实现树形菜单
    本文小编为大家详细介绍“怎么使用Vue递归组件实现树形菜单”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Vue递归组件实现树形菜单”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果如下图,点击后打开二级...
    99+
    2023-07-04
  • vue中如何实现左侧菜单,树形图递归
    这篇文章给大家分享的是有关vue中如何实现左侧菜单,树形图递归的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果图如下所示:先说说遇到的坑,由于是子父组件,当时传递使用的是子父组...
    99+
    2024-04-02
  • Vue2组件tree如何实现无限级树形菜单
    小编给大家分享一下Vue2组件tree如何实现无限级树形菜单,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!How to run ...
    99+
    2024-04-02
  • 如何使用Vue递归组件构建树形菜单
    今天小编给大家分享一下如何使用Vue递归组件构建树形菜单的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在Vue.js中一个递...
    99+
    2023-07-04
  • Jquery树插件zTree如何实现菜单树
    小编给大家分享一下Jquery树插件zTree如何实现菜单树,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下<!...
    99+
    2024-04-02
  • Java递归如何实现菜单树
    这篇文章将为大家详细讲解有关Java递归如何实现菜单树,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。pom文件<xml version="1.0" encod...
    99+
    2023-06-29
  • Layui如何实现tree下拉菜单树
    这篇文章主要为大家展示了“Layui如何实现tree下拉菜单树”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Layui如何实现tree下拉菜单树”这篇文章吧。1...
    99+
    2024-04-02
  • Vue下如何用递归组件实现一个可折叠的树形菜单
    这篇文章主要介绍“Vue下如何用递归组件实现一个可折叠的树形菜单”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue下如何用递归组件实现一个可折叠的树形菜单”文章能帮助大家解决问题。在Vue.js中...
    99+
    2023-07-04
  • 纯CSS3如何实现扇形动画菜单
    这篇文章将为大家详细讲解有关纯CSS3如何实现扇形动画菜单,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简化版完整实例<!DOCTYPE html>...
    99+
    2024-04-02
  • vue.js中怎么利用element-ui实现一个菜单树形结构
    这篇文章将为大家详细讲解有关vue.js中怎么利用element-ui实现一个菜单树形结构,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。后台返回的数据格式是...
    99+
    2024-04-02
  • Vue3 通过作用域插槽实现树形菜单嵌套组件
    目录一、需求来源二、效果图三、使用示例(VTreeNodeDemo.vue)四、源码(VTreeNode.vue):一、需求来源 工作中需要一种树形菜单组件,经过两天的构思最终通过...
    99+
    2023-01-28
    Vue3 树形菜单嵌套组件 Vue 作用域插槽
  • vue如何使用递归树形数据寻找对象
    这篇文章主要讲解了“vue如何使用递归树形数据寻找对象”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue如何使用递归树形数据寻找对象”吧!一、数据结构在开始介绍方法前,让我们先看一下常见的...
    99+
    2023-07-05
  • 如何使用CSS3实现的炫酷菜单
    这篇文章将为大家详细讲解有关如何使用CSS3实现的炫酷菜单,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。index.html代码如下:<ul class="...
    99+
    2024-04-02
  • .NET如何使用Hisql实现菜单管理
    本篇内容主要讲解“.NET如何使用Hisql实现菜单管理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“.NET如何使用Hisql实现菜单管理”吧!一、引言菜单管理界面如图:二、修改增删改查相关代...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作