使用SpringBoot实现树形层级数据的处理返回给前端

本文介绍了如何在Java的ReviewGuidelinesService中,通过queryAll()和listWithTree()方法,将查询到的ReviewGuidelines数据转化为树形结构,重点展示了getChild()函数的作用。
摘要由CSDN通过智能技术生成

主要在service层实现,关键的是listWithTree()和getChild()函数

1、service接口

public interface ReviewGuidelinesService extends IService<ReviewGuidelines> {

    /**
     * 实现查询审查指南表中的 所有数据
     * @return ReviewGuidelines list集合
     */
    List<ReviewGuidelines> queryAll();

    /**
     * 将查询审查指南表中到的所有数据,处理成树形数据
     * @return 处理后的树形数据ReviewGuidelines list集合
     */
    List<ReviewGuidelines> listWithTree();

}

2、service实现

@Service
public class ReviewGuidelinesServiceImpl extends ServiceImpl<ReviewGuidelinesMapper, ReviewGuidelines> implements ReviewGuidelinesService {

    @Autowired
    ReviewGuidelinesMapper reviewGuidelinesMapper;

    /**
     * 实现查询审查指南表中的所有数据
     * @return ReviewGuidelines list集合
     */
    @Override
    public List<ReviewGuidelines> queryAll() {

        return reviewGuidelinesMapper.selectList(null);
    }

    /**
     * 将查询表中的所有数据处理成树形层级数据
     * @return ReviewGuidelines list集合
     */
    @Override
    public List<ReviewGuidelines> listWithTree() {

        //查询review_guidelines表所有数据
        List<ReviewGuidelines> rgs = queryAll();

        //获取为父节点的ReviewGuidelines,并且赋值其子节点
        for (ReviewGuidelines rg : rgs){
            if (rg.getIsParent())
                rg.setReviewGuidelines(getChild(rg,rgs));
            else
                rg.setReviewGuidelines(null);
        }

        //只返回ParentId为0,代表其为审查指南
        List<ReviewGuidelines> returnList = new ArrayList<>();
        for (ReviewGuidelines rg : rgs)
            if (rg.getParentId() == 0)
                returnList.add(rg);

        return returnList;
    }

    public List<ReviewGuidelines> getChild(ReviewGuidelines root, List<ReviewGuidelines> all) {

        // 创建一个集合,存储父节点的子节点
        List<ReviewGuidelines> childs = new ArrayList<>();

        //将 集合中父id == 当前父节点id,即代表该rg是当前父节点的子节点之一
        for (ReviewGuidelines rg : all){
            if (rg.getParentId() == root.getId())
                childs.add(rg);
        }

        return childs;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值