无限极联动-递归

完美例子,复制即用,无限极联动

最近写了一个四级联动,现在分享下代码,其实是可以无限极联动,只要数据够多

返回格式


"data": [
    {
	"id": 1,
	"name": "爷爷",
	"le": 1,
	"fid": 0,
	"childs": [
	    {
		"id": 2,
		"name": "大叔",
		"le": 2,
		"fid": 1,
		"childs": []
	    },
	    {
		"id": 3,
		"name": "爸爸",
		"le": 2,
		"fid": 1,
		"childs": [
		    {
			"id": 4,
			"name": "儿子",
			"le": 3,
			"fid": 3,
			"childs": [
			    {
				"id": 5,
				"name": "小小",
				"le": 4,
				"fid": 4,
				"childs": []
			    }
			]
		    }
		]
	    }
	]
    }
]
}

表,自连接

在这里插入图片描述

代码

在实体类里面需要多加一个 List childs; 集合的字段

//定义方法,返回值根据自己的来我的是Result 
public Result lian(){
        //查询某一级的id 作为父id进行下面子集查询
        //sql select * from lian where id=1  这里就写死了
        List<Lian> list = userMapper.lian1111();
		//循环查询 子集
        for (Lian item:list){
        	//调用封装的方法,给父id 和 等级
            item.setChilds(xx(item.getId(),1));
        }
		//最后全部查完 返回打印
        return Result.ok("data",list);
    }

    public List<Lian> xx(int fid,int le){
        List<Lian> list = new ArrayList<>();
        //如果 等级等于5 就结束调用  可以自己修改结束条件
        if(le == 5){
            System.out.println("结束了");
            return null;
        }
        //根据父id查询出自己
        //sql select * from lian where fid=#{fid}
        List<Lian> list1 = userMapper.lian(fid);
        //等级 +1
        le = le+1;
        // 从上面父id查出来的子集,成为父级继续查子集
        for (Lian item:list1) {
        	//递归调用
            item.setChilds(xx(item.getId(),le));
        }
        list.addAll(list1);

        return list;

    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值