有些同仁對於 JeeSite 4 中的樹表設計不太了解,本應簡單的方法就可實現,卻寫了很多復雜的語句和代碼,所以有了這篇文章。
在 JeeSite 4 中的樹表設計我還是相對滿意的,這種設計比較容易理解,不會太依賴數據庫的語法,對兼容多數據庫比較好。相比網上大牛的左右值樹設計簡單了很多,並且可隨時調換父節點,並級聯更新所有子節點數據。
看下表字段說明我們發現除了父級節點外又多了很多輔助字段,這寫字段的維護可能會稍微影響我們的插入和更新性能, 但是這將極大的簡化了我們的查詢,並不限深度。廢話不多說,下面我們一同來就來看看都有哪些好處。
樹表字段說明
字段名 | 說明 |
---|---|
xxx_code | 節點編碼(xxx表示用戶自定義名稱) |
xxx_name | 節點名稱(xxx表示用戶自定義名稱) |
以下是樹表關鍵字段: | |
parent_code | 節點上級編碼 |
parent_codes | 節點所有上級編碼(快速檢索下級節點) |
tree_sort | 當前層級排序號(decimal類型) |
tree_sorts | 樹節點的完整排序號,10位數字組成(快速整樹排序) |
tree_leaf | 是否是末級,是否葉子節點(0:否,1:是,char類型) |
tree_level | 節點層次級別(從0開始,decimal類型,快速分級查詢,根據層級縮進) |
tree_names | 節點的全名稱(用“/”分隔,快速獲取當前節點完整路徑) |
以下是樹表可選字段: | |
status | 節點狀態(0:正常,1:刪除,2:停用) |
create_by | 創建者用戶編碼 |
create_date | 數據創建時間 |
update_by | 更新者用戶編碼 |
update_date | 數據更新時間 |
下面以區域樹表舉例
定義實體Entity
用戶自定義的節點編碼是area_code