树形结构查询
树形结构查询
- 存储结构
一般来说,树形结构存的就是当前节点和父节点,例如:
1 | CREATE TABLE `sys_dept` ( |
- 实体类

- 我们只需要一个简单的查询,把所有的部门都查出来。不需要写复杂的递归 SQL,把组装的工作留给 Java 程序
- 使用 “Map 两次遍历法”。这种方法性能最好,时间复杂度接近 O(n)
- 第一次遍历:把所有查出来的节点放进一个
HashMap(Key=ID, Value=对象)。这样做是为了后面找父节点时速度极快(不用傻瓜式循环) - 第二次遍历:再次遍历所有节点。对于每个节点,看它的
parentId是谁。- 如果
parentId是 0(根节点),就把它加到最终的rootList里。 - 如果
parentId不是 0,就去HashMap里找到它的父节点,把自己塞进父节点的children列表里
- 如果
- 第一次遍历:把所有查出来的节点放进一个
代码:

得到的Json数据:

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 夏天的风吹向哪里!
