java根据 【父类id】 【查询】其所【有子类id 集合】

所有数据源返回实体

package com.safedog.datasafe.assetcarding.baseinfoclassify.dto;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author xrp
 * @date 2023-03-14 09:50
 **/
@Data
public class ClassifyTreeDto  implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private  Long id;

    /**
     *  父id
     */
    private Long pId;

    /**
     * 名称
     */
    private  String name;

    /**
     * 是否启用
     */
    private Integer enabled;

    /**
     *  指南文件id
     */
    private Long  guideFileId;

    /**
     * 子类
     */
    private List<ClassifyTreeDto> children;

}

业务逻辑处理

      @Override
    public List<BaseInfoClassifyFields> selectBaseInfoClassifyFieldsList(Long id) {
        //查询表中所有数据
        List<ClassifyTreeDto> classifyTree = baseInfoClassifyMapper.listClassifyTree();
        //查询所有子类id集合
        List<Long> ids = getIds(classifyTree, id, new ArrayList<>());
        //添加自己
        ids.add(id);
        // .......
    }

    private List<Long> getIds(List<ClassifyTreeDto> dept, Long id, List<Long> ids) {
        dept.forEach(vo -> {
            if (vo.getPId().equals(id)) {
                ids.add(vo.getId());
                getIds(dept, vo.getId(), ids);
            }
        });
        return ids;
    }

你可能感兴趣的:(java,jvm,spring)