java遞迴實現部門(許可權)樹 自測能用

2021-08-22 13:25:10 字數 3167 閱讀 3289

這段時間開發乙個小功能-實現一顆部門樹,看著挺容易,但是花費了不少的時間,哎。。。

先上**:

public class dept 

public void setchilddept(listchilddept)

public string getisout()

public void setisout(string isout)

public void addchild(dept dept)

public void sortchildren()

});for (int i = 0; i < childdept.size(); i++) }}

public int getdeptid()

public void setdeptid(int deptid)

public string getdeptname()

public void setdeptname(string deptname)

public int getpid()

public void setpid(int pid)

}

訪問介面:

@apioperation(value = "部門列表", notes = "展示部門資訊")

public dataresult list() catch (exception e)

}service

public listlist() throws exception 

// 遞迴處理部門

public listgetdepartmentlist(dept dept, listlist) throws exception

if (null != result && result.size() > 0)

}return list;

}

maper.xml

select * from m_dept where 1=1

and pid=#

對應的sql檔案為

drop table "datashare"."t_tmp";

create table "datashare"."t_tmp" (

"deptid" number(38) not null ,

"deptname" varchar2(128 byte) null ,

"pid" number(38) null ,

"isout" char(2 byte) null

)logging

nocompress

nocache

;-- ----------------------------

-- records of t_tmp

-- ----------------------------

insert into "datashare"."t_tmp" values ('3', '人力部', '1', 'y ');

insert into "datashare"."t_tmp" values ('4', '銷售一部', '2', 'n ');

insert into "datashare"."t_tmp" values ('5', '銷售二部', '2', 'n ');

insert into "datashare"."t_tmp" values ('6', '銷售二部分部', '5', 'n ');

insert into "datashare"."t_tmp" values ('8', '人力二部', '3', 'y ');

insert into "datashare"."t_tmp" values ('7', '銷售一部分部', '4', 'y ');

insert into "datashare"."t_tmp" values ('1', '公司', '0', 'y ');

insert into "datashare"."t_tmp" values ('2', '銷售部', '1', 'y ');

注意:sql檔案的表名和maper檔案的表名不一致,需要改。這裡的上級部門都是用數字來標識。

但是有些時候是用層級來標識,比如頂級為0001,下一級為00010001,下一級的兄弟節點為00010002,直到00010009後變為00010010,這種方法來實現上下級關係。

那麼用另一種方式來實現樹(以前公司的部門實現)。

public class supervo implements serializable

public void setdr(int dr)

public string getid()

public void setid(string id)

public timestamp getcreationtimestamp()

public void setcreationtimestamp(timestamp creationtimestamp)

public timestamp getmodificationtimestamp()

public void setmodificationtimestamp(timestamp modificationtimestamp)

}

tree的實現類

public class multipletree 

// 根節點

supertreevo root = null;

iterator<? extends supertreevo> itroot = datalist.iterator();

listrootlist =new arraylist();

while(itroot.hasnext())

else

else

}} for(supertreevo roottree :rootlist)

return rootlist.tostring();

}}

public class comparatortree implements comparator

}

呼叫方式為:datalist 為部門中所有資料,multipletree.gettree(datalist )

JAVA遞迴生成許可權樹

遞迴生成乙個許可權樹,可通過以下過程實現 每條許可權有自己的id 父節點parentid 許可權名稱name 許可權還擁有次級許可權children。許可權表 create table module id int 10 not null auto increment comment 模組id par...

Java 遞迴查詢部門樹形結構資料

說明 在開發中,我們經常使用樹形結構來展示選單選項,如圖 那麼我們在後端怎麼去實現這樣的乙個功能呢?1 資料庫表 department 2 編寫sql對映語句 select from department and updepartmentcode 3 建立實體類 public class depar...

java實現遞迴

遞迴,簡單的理解就是自己呼叫自己 主要分為兩部分,遞迴頭,遞迴的結束條件 遞迴體,自己呼叫自己的過程 1 最常見的就是階乘,比如求5的階乘,數學公式就是 5 4 3 2 1,public class digui else public static void main string args 2 求...