删除树形结构

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

对于这种情况来说,可以采用递归的方式,遍历从该父节点开始的全部节点数据,从而记录全部的节点的唯一主键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);
    });
}
 

 

posted on 2022-03-24 16:18  一往无前!  阅读(196)  评论(0编辑  收藏  举报