遞迴生成乙個許可權樹,可通過以下過程實現:
每條許可權有自己的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 ...