父子同表的相关操作
写在前面
对于父子同表的数据,数据是级联相关的,操作方式,主要有三个方案
- 基于所有数据,平铺,操作
- 构建树形结构数据,操作
- SQL(Mysql/Oracle)
具体使用,可基于不同业务需求,选择,平铺数据更直观,树形结构是抽象数据(表面上,似乎你永远也不知道某一结点下,向下递归会有多深…)
一、基于所有数据,平铺,操作
这里主要是,集合遍历操作(可借助 Java8 Stream API),这里的问题很明显,要不断sql查询,组装数据,不推荐…
二、构建树形结构数据,操作
这里操作方式,要难很多,涉及到
- 树的构建(基于任意节点,或全量)
- 当前节点,向下递归,取得所有子(或最深)
- 当前节点,向上递归,取得所有父(或最顶级父)
三、SQL实现方案
可参考,MySQL部门或菜单父子节点递归实现树查询
这里用到了自定义函数或者存储过程,或者复杂SQl的实现