今天我帶來了怎麼給前端返回乙個樹狀json。關於有層級關係時我們應該怎麼做呢?
很多人可能會想到用遞迴這個方式,但是用遞迴的話… 稍不留神就陷入死迴圈。然後佔滿了棧。這個雷本小白踩過。哈哈哈。
好了,經過自己的不斷嘗試,最後用到了一種比較笨的方法來解決這個問題。雖然**比遞迴要多了那麼一丟丟,但是比較簡單。適合小白理解。往下看…
我剛開始用的是遞迴,咱們看看**
這是manage層
//用list構建帶有層次結構的json資料
//list父子節點構造樹形json
//將list集合轉成樹形結構的list集合
public static listlisttotree(listlist)
}return treelist;
}//尋找子節點
private static tconmenu findchildren(tconmenu tree, listlist)
tree.getchildren().add(findchildren(node, list));}}
return tree;
}
接著看看service層
public listselectmenutree()
這是測試service的test
@test
public void selecttree()
以上使用的是遞迴方式咱們看看執行結果
以上就是報的錯誤,目前我這個小白技術太菜了,陷入了死迴圈,堆滿了棧搞得棧溢位來了。這不能怪誰,怪自己。
但是… 我並沒有氣餒。我換了種方式,(奸笑~)
接著往下看。我用了個比較笨的辦法,
這是service層
private listdobuildmenutree(listmenulist) else
} //整理二級選單,放到一級選單的children節點鐘
listthreelevelmenulist = new arraylist<>();
maptwolevelmenumap = new hashmap<>();
dogatherchildren(onelevelmenumap, childrenmenulist, twolevelmenumap,threelevelmenulist);
//整理**選單,放到二級選單的children節點
listfourlevelmenulist = new arraylist<>();
mapthreelevelmenumap = new hashmap<>();
dogatherchildren(twolevelmenumap, threelevelmenulist, threelevelmenumap,fourlevelmenulist);
return onelevelmenulist;
} private void dogatherchildren(mapparentmenumap, listallchildrenlist,
mapchildrenmenumap, listchildrenlist ) else
} }
方法寫完了,接著就是呼叫了。
public listselectmenutree()
然後咱們看執行結果。
就出來了。凡事多嘗試幾次。
最後這個方法比較笨,用了幾個list幾個map。**量比較多。
但是能實現出來就好了。
查詢資料返回前端呈樹狀結構
首先sql查詢出的資料結構必須包含自己與自己的父級,sql查詢出的資料封裝到下面實體類 data 此註解是lombok的註解,可以幫我們生成setter getter方法 noargsconstructor lombok註解,生成無參構造 allargsconstructor lombok註解,生成...
MongoDB匯出查詢出來的資料集合
第一步 將查詢的結果生成一張臨時表 use 資料庫 var result db.集合名.find while result.hasnext db.temp 臨時表 insert result.next 第二步 需要認證 mongoexport h cdn或者ip d 資料庫名 port 埠號 use...
mysql刪除多表中查詢出來的資料
它文中的第三點是這樣寫的 3 從兩個表中找出相同記錄的資料並把兩個表中的資料都刪除掉 delete t1,t2 from t1 left join t2 on t1.id t2 id where t1.id 25 注意此處的delete t1,t2 from 中的t1,t2不能是別名 說t1,t2不...