树结构递归N级删除
最近项目中文件是存在本地的,遇到了递归删除的问题,然后就写了一下
数据表设计
dir_id记录的为父目录的id,dir_id=-1表示是根节点,这样子就形成了一个树图的结构
public void test(){
List<TFileInfo> list = this.deleById(326);
list.forEach(v->{
System.out.println("==================="+v);
});
}
public List<TFileInfo> deleById(Integer oneid){
ArrayList<TFileInfo> ids=new ArrayList<>();
//先把要删除的一级分类ID放入到集合中
TFileInfo one = tFileInfoService.selectById(oneid);
ids.add(one);
//递归的将一级分类下的id也放入到集合中
this.getIds(ids,oneid);
return ids;
}
private void getIds(ArrayList<TFileInfo> ids, Integer oneid) {
//查询二级分类的对象
Wrapper<TFileInfo> wrapper=new EntityWrapper<>();
wrapper.eq("dir_id",oneid);
List<TFileInfo> twolist = tFileInfoService.selectList(wrapper);
//遍历二级分类的对象,把二级分类的id加入到要删除的集合中
twolist.forEach(k->{
TFileInfo tFileInfo = tFileInfoService.selectById(k.getId());
ids.add(tFileInfo);
//把二级分类的每一个id加入到要删除的集合中
this.getIds(ids,k.getId());
});
}
运行结果