递归方法,查询出树该组织及以下组织的组织ID

Posted 侯爵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归方法,查询出树该组织及以下组织的组织ID相关的知识,希望对你有一定的参考价值。

-- 查询出该组织下所有组织id的集合
--方法一:
public List<Integer> getAllOrgid1(List<Integer> orgid,List<Integer> list,Boolean isIncludeSelf){
    list.addAll(orgid);
    List<Integer> intList=new ArrayList<Integer>();
    for(Integer i : orgid){
        List<Org> orglist = orgService.selectInfo(" FROM Org Where 1=1 and  parentId="+i);
        for(Org o : orglist){
            intList.add(o.getOrgid());
        }
    }
    if(intList.size()>0){
        return getAllOrgid1(intList,list,isIncludeSelf);    
    }
    return list;
}

--方法二:
public String getAllOrgids(Integer orgid){
    String allOrgId=getAllOrgid(orgid,"");
    if("".equals(allOrgId)){
        return orgid.toString();
    }else{
        allOrgId+=","+orgid;
        return allOrgId;
    }
}


public String getAllOrgid(Integer orgid,String str){
    List<Org> orglist = orgService.selectInfo(" FROM Org ");
    if(orglist!=null&&orglist.size()>0){
        int index = 0;
        for(Org o : orglist){
            String parentId1=o.getParentId().toString();
            String orgidNow1=orgid.toString();
            if(parentId1.equals(orgidNow1)){
                if(index > 0){
                    str += ",";
                    index = 0;
                }
                str+=o.getOrgid();
                boolean bool = false;
                for(int j=0; j< orglist.size(); j++){
                    String parentId2=orglist.get(j).getParentId().toString();
                    String orgidNow2=o.getOrgid().toString();
                    if(parentId2.equals(orgidNow2)){
                        bool = true;
                        break;
                    }
                }
                if(bool){
                    // 调用自身,实现递归
                    str += ",";
                    str = getAllOrgid(o.getOrgid(),str); 
                }
                index ++;
            }
        }
    }
    return str;
}

 

以上是关于递归方法,查询出树该组织及以下组织的组织ID的主要内容,如果未能解决你的问题,请参考以下文章

组织树列表查询,不使用递归一次循环搞定

mysql树形结构的查询案例

MySQL递归查询,实现上下级联查,父子级查询

mysql递归查询

基于组织的数据权限SQL查询方案

“联合国粮食及农业组织”数据库查询指南