1. 程式人生 > 實用技巧 >樹形結構基礎知識介紹

樹形結構基礎知識介紹

節點型別

約定:整個樹形結構節點的層次最多隻能三層

在資料庫中表示樹形結構

建立選單的資料結構表

插入資料

insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('1',NULL,'系統許可權選單','glyphicon glyphicon-th-list',NULL);
insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('2','1',' 控 制 面 板 ','glyphicon glyphicon-dashboard','main.htm
'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('3','1','許可權管理','glyphicon glyphicon glyphicon-tasks',NULL); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('4','3',' 用 戶 維 護 ','glyphicon glyphicon-user','user/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values
('5','3',' 角 色 維 護 ','glyphicon glyphicon-king','role/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('6','3',' 菜 單 維 護 ','glyphicon glyphicon-lock','permission/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('7','1',' 業 務 審 核 ','glyphicon glyphicon-ok
',NULL); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('8','7','實名認證稽核','glyphicon glyphicon-check','auth_cert/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('9','7',' 廣 告 審 核 ','glyphicon glyphicon-check','auth_adv/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('10','7','專案稽核','glyphicon glyphicon-check','auth_project/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('11','1','業務管理','glyphicon glyphicon-th-large',NULL); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('12','11','資質維護','glyphicon glyphicon-picture','cert/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('13','11','分類管理','glyphicon glyphicon-equalizer','certtype/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('14','11','流程管理','glyphicon glyphicon-random','process/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('15','11','廣告管理','glyphicon glyphicon-hdd','advert/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('16','11','訊息模板','glyphicon glyphicon-comment','message/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('17','11','專案分類','glyphicon glyphicon-list','projectType/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('18','11','專案標籤','glyphicon glyphicon-tags','tag/index.htm'); insert into `t_menu` (`id`, `pid`, `name`, `icon`, `url`) values('19','1','引數管理','glyphicon glyphicon-list-alt','param/index.htm');

關聯方式

子節點通過pid欄位關聯到父節點的id欄位,建立父子關係

  • 根節點的pidnull
  • pid:parentID
  • 父子關係是一對多的關係

java類中表示樹形結構

基本方式

Menu類中使用List<Menu>children屬性儲存當前節點的子節點

為了配合zTree所需要新增的屬性

zTree 是一個依靠 jQuery 實現的多功能 “樹外掛”。優異的效能、靈活的配置、多種功能的組合是 zTree 最大優點。

  • pid(parent id)屬性:找到父節點
  • name屬性:作為節點的名稱
  • icon屬性:當前節點使用的圖示
  • open屬性:控制節點是否預設開啟
  • url屬性:點選節點時跳轉的位置

按鈕增刪改查的規則

  • Level0:根節點
    •   新增子節點
  • Level1:分支節點
    •   修改
    •   新增子節點
    •   沒有子節點:可以刪除
    •   有子節點:不能刪除
  • Level2:葉子節點
    •   修改
    •   刪除