后端数据进行树结构封装

思想:

获取数据库List返回集,遍历集合将数据封装到map集合,然后调用工具MenuTreeUtil类的menuList方法实现树结构

工具MenuTreeUtil类:

     获取父节点menuList方法:遍历数据库返回集,根据pid获取父节点数据,然后调用menuChild方法获取子节点,然后将map集合封装到list集合;

     获取子节点menuChild方法:遍历数据库返回集,根据封装的实体类对象dept的属性did获取子节点,然后用递归获取子节点,并封装到map集合,然后将map集合封装到list集合;

步骤:

一.实体类

@SuppressWarnings("serial")
@NoArgsConstructor
@Data
@Accessors(chain = true)
public class Dept implements Serializable {

    private Integer dId;
    private String dName;
    private String db_source;
    private Integer pid;
    private List<Dept> chilren;   //子节点


}

二.工具类

package com.zhengxh.microservice.util;

import com.zhengxh.microservice.entity.Dept;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class MenuTreeUtil {

    public static Map<String,Object> mapArray = new LinkedHashMap<String, Object>();
    public List<Dept> menuCommon;

    public List<Object> menuList(List<Dept> menu){ //controller层调用的方法   ,并将数据以list的形式返回
        this.menuCommon = menu;
        List<Object> list = new ArrayList<Object>();
        for (Dept x : menu) {
            Map<String,Object> mapArr = new LinkedHashMap<String, Object>();
            if(x.getPid().equals(0)){
                mapArr.put("id", x.getDId());
                mapArr.put("tree_name", x.getDName());
                mapArr.put("parent_source", x.getDb_source());
                mapArr.put("Parent_id", x.getPid());
                mapArr.put("child", menuChild(x.getDId()));
                list.add(mapArr);
            }
        }
        return list;
    }

    public List<Object> menuChild(Integer id){ //子集查找遍历
        List<Object> lists = new ArrayList<Object>();
        for(Dept a : menuCommon){
            Map<String,Object> childArray = new LinkedHashMap<String, Object>();
            if(a.getPid().equals(id)){
                childArray.put("id", a.getDId());
                childArray.put("tree_name", a.getDName());
                childArray.put("parent_source", a.getDb_source());
                childArray.put("Parent_id", a.getPid());
                childArray.put("child", menuChild(a.getDId()));
                lists.add(childArray);
            }
        }
        return lists;
    }

}

三.controller调用:

  @PostMapping(value = "/findTree")
    public Object findTree() {

        Map<String, Object> returnMap = new HashMap();
        List<Dept> lists =  deptService.getList();
        MenuTreeUtil menuTree = new MenuTreeUtil();
        List<Dept> lt = new ArrayList<Dept>();
        for (int i = 0; i < lists.size(); i++) {
            Dept t = new Dept();
            t.setDId((Integer) lists.get(i).getDId());
            t.setDName((String) lists.get(i).getDName());
            t.setDb_source((String) lists.get(i).getDb_source());
            t.setPid((Integer) lists.get(i).getPid());
            lt.add(t);
        }
        System.out.println(lt);
        List<Object> menuList = menuTree.menuList(lt);
        returnMap.put("list", menuList);
        return returnMap;
    }
发布了193 篇原创文章 · 获赞 30 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/yiye2017zhangmu/article/details/100264029