起因:一個(gè)正常的管理功能,其中一張代表組織的表示這樣的喂窟。
組織表.png
注意表中的parent字段测暗,它指向同表上的其他條目的id字段,這張表是一張有父子關(guān)系的表磨澡。
所以前臺(tái)要最終展示成一棵樹(shù)碗啄。類似平時(shí)我們?cè)趇dea上看到的java文件目錄。
java目錄.png
這種情況稳摄,如果使用zTree類的前端框架稚字,那么數(shù)據(jù)中有parent字段的情況下,直接從數(shù)據(jù)庫(kù)查出數(shù)據(jù)即可厦酬。
但總有一些情況下胆描,無(wú)法使用框架,前端的童鞋可能會(huì)要求后臺(tái)將這張組織表上的數(shù)據(jù)組成樹(shù)型結(jié)構(gòu)返回弃锐。
如果之前的數(shù)據(jù)是List<SysOrganization>的話
列表數(shù)據(jù).png
現(xiàn)在就變成了List<Map<String, Object>>
樹(shù)型數(shù)據(jù).png
其實(shí)后者就是將前者用data和children兩個(gè)字段包起來(lái)了袄友。
總的來(lái)說(shuō)還算是常見(jiàn)操作殿托,于是我們考慮制作一個(gè)工具來(lái)解決這個(gè)問(wèn)題霹菊,避免以后的重復(fù)操作。
這里先來(lái)看看最后的結(jié)果支竹。也就是工具實(shí)現(xiàn)后的使用方法展示旋廷,附帶工具使用前的方法對(duì)比。
工具使用前.png
工具使用展示.png
只需一個(gè)函數(shù)礼搁,即可將完成我們的功能饶碘,并且有非常好的兼容性和極低的入侵性。