java樹形菜單實現
公司表:
部門表:
實體類:
public class Node { private Integer companyId;//公司id private String companyName;//公司名字 private Integer departId;//部門id private String parentId; private String departName;//部門名字 private List<Node> children; //父節點的子類 get/set............. }
樹形節點工具類:
package com.dengwei.day01springboot.utils; import com.dengwei.day01springboot.model.Node; import java.util.ArrayList; import java.util.List; /** * @Author * @ClassName TreeUtile * @Description TODO * @Date 2018/10/30 0030 下午 11:29 * @Version 1.0 */ public class TreeUtile { /** * @Author * @Description //TODO * @Date 2018/10/31 0031 上午 12:02 * @Param nodes :所有的節點列表 * @return */ public List data(List<Node> nodes) { ArrayList<Node> rootNode = new ArrayList<>(); for(Node node:nodes){ if(node.getParentId().equals("0")){ rootNode.add(node); } } for(Node node:rootNode){ List<Node> child = getChild(String.valueOf(node.getDepartId()), nodes); node.setChildren(child); } return rootNode; } /** * @return * @Author * @Description //TODO 獲取根節點的子節點 * @Date 2018/10/30 0030 下午 11:37 * @Param */ public List<Node> getChild(String id, List<Node> allNode) { //存放子菜單的集合 ArrayList<Node> listChild = new ArrayList<>(); for (Node node : allNode) { if (node.getParentId().equals(id)) { listChild.add(node); } } //遞歸: for (Node node : listChild) { node.setChildren(getChild(String.valueOf(node.getDepartId()), allNode)); } if (listChild.size() == 0) { return null; } return listChild; } }
controller使用:
dao:
mapper: