鍍金池/ 問答/Java  數(shù)據(jù)庫/ 層級(jí)展示當(dāng)前用戶所在的部門,一個(gè)用戶可以添加不同等級(jí)的多個(gè)部門

層級(jí)展示當(dāng)前用戶所在的部門,一個(gè)用戶可以添加不同等級(jí)的多個(gè)部門

問題描述

有個(gè)選擇用戶所在地區(qū)的功能,比如用戶添加到了陜西省下面,他除了可以看到陜西省這個(gè)部門,還可以看到陜西省下面所有的部門以及子部門。如果只加在陜西省西安市,只能看見陜西省西安市和西安市下面的所有部門。如果加在西安市,又加在銅川市下面的一個(gè)縣里,他可以看到陜西省下面的西安市和西安市下面的所有部門,還可以看到銅川市,但銅川市下面只能看到一個(gè)縣。類似于企業(yè)微信選擇通訊錄功能。

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

我只實(shí)現(xiàn)了省市縣,如果縣下面有鎮(zhèn),鎮(zhèn)下面有街道或者鄉(xiāng),有沒有不用遞歸就可以實(shí)現(xiàn)的,盡量減少數(shù)據(jù)庫操作,或者是把數(shù)據(jù)全取出來,用java遞歸。大家有什么具體實(shí)現(xiàn)的方法沒有?

回答
編輯回答
荒城

這種一般都是用緩存完成的,每次都查性能太差了

1):放入在Redis中
2):放入ServletContext域
2017年2月22日 12:27
編輯回答
還吻

這種不經(jīng)常改變的列表,可以考慮進(jìn)行緩存

遞歸的話,有些數(shù)據(jù)庫是支持查詢語句遞歸的,java 中遞歸也很簡(jiǎn)單,但你考慮好,你遞歸之后的返回?cái)?shù)據(jù)是一個(gè)列表還是一個(gè)嵌套的樹……

查出來這個(gè)級(jí)聯(lián)數(shù)據(jù)是為了展示吧,如果圖省事,直接找個(gè)樹插件比如 ztree 這種可以幫你遞歸,前端渲染出父子關(guān)系,你后臺(tái) select all 就行了。

2018年3月5日 13:10