JAVA遞迴生成許可權樹

2021-09-23 14:23:40 字數 1818 閱讀 3564

遞迴生成乙個許可權樹,可通過以下過程實現:

每條許可權有自己的id、父節點parentid、許可權名稱name、許可權還擁有次級許可權children。

許可權表:

create table `module` (

`id` int(10) not null auto_increment comment '模組id',

`parent_id` int(10) default '0' comment '父模組id',

`parent_name` varchar(50) default '' comment '父模組名稱',

`name` varchar(50) default '' comment '模組名稱',

`remark` varchar(50) default '' comment '說明',

`module_code` varchar(50) default '' comment '模組許可權**',

`permission_type` int(2) default '0' comment '許可權型別(0無 1瀏覽 2編輯 3審核)',

`delete_flag` int(2) default '0' comment '刪除標識 0 不刪 1刪除',

`created_at` datetime default null comment '建立時間',

`creator` varchar(20) default null comment '建立者',

`updated_at` datetime default null comment '跟新時間',

`modifier` varchar(20) default null comment '修改者',

primary key (`id`)

) engine=innodb auto_increment=6 default charset=utf8 comment='許可權表';

實體類:

public class module extends baseentity
先查詢所有許可權資料list,將list作為引數傳入getchildren方法。

方法getchildren獲取所有根節點,將根節點彙總建立樹形結構,getchildrens方法為節點建立次級樹並拼接上當前樹,遞迴呼叫getchildrens不斷為當前樹開枝散葉直至找不到新的子樹。完成遞迴,獲取樹形結構。

// 查詢模板列表

listmodulelist = moduleservice.getmodulelist(param);

// 生成許可權樹

listtreegridlist = getchildren(modulelist);

/*** 獲取跟節點

* @param list

* @return

*/private listgetchildren(listlist)

}return result;

}/**

* 遞迴獲取子節點

* @param module

* @param list

* @return

*/private hwadmodule getchildrens(hwadmodule module, listlist)

}module.setchildren(childnodes);

return module;

}

這樣就可以生成乙個樹形json返回前端解析了。

Java遞迴生成樹

注意 根節點的pid 0,其他節點的pid跟id是有對應的父子關係的。這裡只展示遞迴生成樹的 查詢資料庫的操作非常簡單,只用到了一句sql,然後將結果封裝成list。select id,pid,name from t menu service override public list tree 遞迴...

JAVA遞迴生成tree樹

關於類別樹的多級是乙個剛接觸ajax和多級類別很頭痛的問題,針對那種商品種類繁多,級別層次多更是麻煩的問題,去年剛學asp.net,實驗室的同學曾經這樣做過,遞迴sql,現在看了驚心動魄 雖然實現了類別多級的問題這樣帶來的後果確實無窮無盡的.遞迴查詢,和雙迴圈巢狀的執行sql語句沒什麼區別了.這樣帶...

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

這段時間開發乙個小功能 實現一顆部門樹,看著挺容易,但是花費了不少的時間,哎。先上 public class dept public void setchilddept listchilddept public string getisout public void setisout string ...