首页 > 技术文章 > 删除树形结构

1gaoyu 2022-03-24 16:18 原文

对于多数菜单来说都是采用树形结构进行排列的,在进行删除菜单数据时需要删除该父节点以下的全部节点

对于这种情况来说,可以采用递归的方式,遍历从该父节点开始的全部节点数据,从而记录全部的节点的唯一主键id,然后通过id对整个树进行删除

 
//删除菜单,需要前端传入选中的节点的id值,然后通过id值删除其余子节点
public void removeDirectory(Long id) { List<Long> idList = new ArrayList<>(); idList.add(id); this.selectChildListById(id,idList); System.out.println(idList);       //利用mapper中的方法按照id值删除整个列表中的数据 baseMapper.deleteBatchIds(idList); }

/**
* 采用递归的方式获取该父节点下全部节点的id
* @param id
* @param idList
*/

public void selectChildListById(Long id, List<Long> idList)
{
List<Base> childList = baseMapper.selectList(new QueryWrapper<Base>().eq("parent_id",id).select("id"));
childList.forEach(base -> {
idList.add(base.getId());
this.selectChildListById(base.getId(),idList);
    });
}
 

 

推荐阅读