树结构递归N级删除

树结构递归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());
        });
    }

运行结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值