在后台开发的过程中,有让我们写树形图的需求,我们可以在代码中用递归去实现,也可以用mysql8的函数去实现,这里我提供一个新的思路使用双重for循环去实现. 我这里采用的数据表示若依中的menu菜单表为例.我们要实现的样子是下面这个样子:
首先我们先对查询所有数据,按照正序进行排列相关代码以及示意图如下:
在这个图中的main_id和parent_id是有关联关系的,只要是这种树状图的表,那么都有会这两个字段进行关联,字段名可能不是这两个.当我们查询出来数据的时候就可以写具体的方法了代码如下:
一定要在SysMenu字段中添加List kid字段,用来存放子类.
思路就是,外循环从最后一个开始遍历,如果parent_id不为空,那就进入内循环,从倒数第二个进行遍历,将外循环的parent_id和内循环的menu_id进行对比,如果说相同,那么将外训的的parent放到内循环的kid集合中.最后删掉外循环的对象,重新开始循环.