美文网首页
多层级菜单数据返回

多层级菜单数据返回

作者: He_Yifeng | 来源:发表于2019-02-26 16:49 被阅读0次

java层多级菜单返回数据问题,菜单的数据存在于数据库的一张数据字典表中,层级为多级,需要以json格式返回给前端,基于jdk8完成。

数据库数据字典存储数据如下(pId=0代表顶级菜单):


类目.png

前端展示如下:


类目.png

因为存在多层级关系,所以我们能想到的便是使用递归的方式将类目的子类目都拿出来,最后转换成json返回。为了避免数据库IO,拿数据我们一次性将改表中的所有数据都拿出。

    public List<DataTypeShow> findAllDataType(DataType dataType){
        //所有类目
        List<DataTypeShow> dts = ......;
        //所有顶级类目
        List<DataTypeShow> tops = dts.stream().filter(x->x.getpId()==0).collect(Collectors.toList());
        //top id作为key,子级作为value组成map
        Map<Integer, List<DataTypeShow>> allMap = dts.stream().collect(Collectors.groupingBy(DataTypeShow::getpId));
        //递归查询
        List<DataTypeShow> list = this.treeDataType(tops, allMap);
        return list;
    }

可以看出首先是获取了所有的类目数据,然后根据pId=0获取顶级菜单的数据,接着根据pId进行分类封装成Map,最后就是调用我们的递归函数。

    public List<DataTypeShow> treeDataType(List<DataTypeShow> top, Map<Integer, List<DataTypeShow>> allMap){
        top.forEach(dataTypeShow -> {
            List<DataTypeShow> temp = allMap.get(dataTypeShow.getId());
            if (temp!=null && !temp.isEmpty()){
                dataTypeShow.setChildren(temp);
                treeDataType(dataTypeShow.getChildren(), allMap);
            }else{
                dataTypeShow.setChildren(new ArrayList<>());
            }
        });
        return top;
    }

这个递归函数很简单,就是循环顶级菜单,看其是否有子类目,如果有就将该类目存入children中,然后再调用函数,如果没有说明该类目就是叶子类目,存入空。

最后封装成相应的json格式,如下:


响应数据格式.png

相关文章

  • 多层级菜单数据返回

    java层多级菜单返回数据问题,菜单的数据存在于数据库的一张数据字典表中,层级为多级,需要以json格式返回给前端...

  • flask 返回层级菜单

  • 纯代码NSOutlineView

    在mac开发中,常常需要用类似列表的结构来展示数据,最好还有层级,类似于树,比如族谱、菜单等层级结构数据。这个时候...

  • OutlineView

    在mac开发中,常常需要用类似列表的结构来展示数据,最好还有层级,类似于树,比如族谱、菜单等层级结构数据。这个时候...

  • 层级菜单

    层级菜单 body{font-family:'Microsoft Yahe...

  • 层级菜单

  • 层级菜单

  • java 树状结构数据的对象封装

    场景 树状结构的菜单数据,封装好提供给前端.核心方法:mergeList()前置条件:节点具有层级信息

  • Vue+element使用table实现树形菜单

    使用一维数组现实树形菜单,根据菜单的层级使用动态样式缩进实现视觉上的层级效果 utils两个工具类

  • 多级滑动菜单

    译文仅为团队内部分享,对外不对质量负责。 期望:多层级菜单,延迟滑动动画效果,附送面包屑功能以及返回按钮。 Dem...

网友评论

      本文标题:多层级菜单数据返回

      本文链接:https://www.haomeiwen.com/subject/hatzyqtx.html