树形表的标记字段是什么?如何查询MySQL树形表?

193 阅读1分钟

树形表的标记字段是parentId,即父节点的id。

查询树形表的方法:

  1. 当层级固定时可以使用表的自连接进行查询。
  2. 如果想灵活查询每个层级可以使用MySQL中的递归方法,使用with RECURESIVE实现。
  3. 使用代码递归的方式构建树。
  4. 通过HashMap,只需要遍历一次,就可以完成树的生成。比较推荐使用,参考代码如下
List<TreeNodeDTO> list = mapper.getNodeList();
ArrayList<TreeNodeDTO> rootNodes = new ArrayList<>();
Map<Integer, TreeNodeDTO> map = new HashMap<>();
for (TreeNodeDTO node : list) {
    map.put(node.getId(), node);
    Integer parentId = node.getParentId();
    // 判断是否有父节点 (没有父节点本身就是个父菜单)
    if (parentId.equals('0')){
        rootNodes.add(node);
        // 找出不是父级菜单的且集合中包括其父菜单ID
    } else if (map.containsKey(parentId)){
        map.get(parentId).getChildren().add(node);
    }
}