這段時間開發乙個小功能-實現一顆部門樹,看著挺容易,但是花費了不少的時間,哎。。。
先上**:
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 求...