查詢樹狀結構的結果

//javabean
public class OrganizationInfos implements Serializable {

    private static final long serialVersionUID = 2212534990471143810L;

    //屬性···
}
//DAO
@Query(value = "SELECT * FROM organization_infos where PARENT_ID not in (select ORGANIZATION_ID from organization_infos)", nativeQuery = true)
List<OrganizationInfos> topOrganization();

//impl

public List<OrganizationInfos> organizationTree() {
    List<OrganizationInfos> roots = getList();
    Map<String, List<OrganizationInfos>> parentsGroup =
        roots.stream().filter(node -> node.getParentId()
            != null).collect(Collectors.groupingBy(OrganizationInfos::getParentId));
    List<OrganizationInfos> organizationInfos = organizationDao.topOrganization();
    //        List<OrganizationInfos> organizationInfos =
    //            roots.stream().filter(node -> node.getParentId() == null).collect(Collectors.toList());
    ArrayList<OrganizationInfos> parentNodes = new ArrayList<>(organizationInfos);
    for (int i = 0; i < parentNodes.size(); i++) {
        OrganizationInfos parentNode = parentNodes.get(i);
        List<OrganizationInfos> childNodes = parentsGroup.get(parentNode.getOrganizationId());
        if (childNodes != null) {
            parentNode.setChildren(childNodes);
            parentNodes.addAll(childNodes);
        }
    }
    return organizationInfos;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章