資料庫樹形資料如何組裝為後臺樹形資料結構
我是在寫樹形選單時遇到的問題,樹形資料在資料庫中是一張表的自關聯儲存,在前臺解析的的是樹形的資料結構,就需要將查詢的一條條資料包裝為樹形結構。
有兩個方法:
1、一次查詢一層,一層一層往下查,需要使用遞迴,這個網上例子很多,但是需要發太多查詢,不是我想要的。
2、一次查出所有資料,自己拼裝為樹形結構
資料表結構:
menu_id , name , url , icon , parent_id , ordered
Java類
public class Menu {
private String menuId;
private String name;
private String url;
private String icon;
private String parentId;
private Integer ordered;
private Boolean state;
private List<Menu> children;
/*
get、set方法
*/
}
實現邏輯
/*
* 首先資料庫查詢的時候最好按照ordered的大小排序,應該是越小的是父節點,越大的是子節點,按照降序排列
也就是子級在上,才好用下面的方法:
1、用查詢資料給temp賦值
Map <String, Menu> temp = new LinkedHashMap<String, Menu>();
讀取資料庫資料,每次一條記錄,相當於一個Menu物件
每次都new 一個Menu,資料庫賦值,並存儲到temp中以ID為key,物件為Value
此時的最低級別在temp頂部,最高級別在temp底部
用LinkedHashMap是因為這個map是循壞是按儲存順序來迭代。
2、循壞temp
當temp賦值結束之後開始循壞temp,從最頂部也就是最低級別開始迭代
判斷該節點是不是頂級,如不是頂級就在temp中拿出父節點,設定父級的children.add,
迴圈結束,最後,拿到temp的最後一個節點,就是最高節點,裡面包含N 多children
*/
//將所有資料取出放進集合
List<Menu> list = menuMapper.getAll();
/*
* 迴圈list拿出,每次一條記錄,相當於一個Menu物件
* 每次都new 一個Menu,資料庫賦值,並存儲到temp中以ID為key,物件為Value
* 用LinkedHashMap是因為這個map是循壞是按儲存順序來迭代。
*/
Map<String, Menu> temp = new LinkedHashMap<String, Menu>();
for (Menu menu : list) {
temp.put(menu.getMenuId(), menu);
}
//頂部節點
Menu top = new Menu();
//迴圈temp
for (Menu menu : temp.values()) {
//判斷此節點是不是頂部(因為我的資料庫的頂部節點的id是設為null)
if(menu.getParentId() != null){
//不是頂部節點,找到父級並給父級進行children.add方法
Menu parent = temp.get(menu.getParentId());
parent.getChildren().add(menu);
}else{
//已經循壞到頂部,新增子節點
top.getChildren().add(menu);
}
}
//此時的top就是頂部的節點了
相關推薦
資料庫樹形資料如何組裝為後臺樹形資料結構
我是在寫樹形選單時遇到的問題,樹形資料在資料庫中是一張表的自關聯儲存,在前臺解析的的是樹形的資料結構,就需要將查詢的一條條資料包裝為樹形結構。 有兩個方法: 1、一次查詢一層,一層一層往下查,需要使用遞迴,這個網上例子很多,但是需要發太多查詢,不是我想要
資料庫中樹結構資料,轉換為Java物件樹結構( 多叉樹結構 )
總體就是圖所表示所表示的轉換,由資料庫 => Java物件轉換,程式碼比較簡單 提供了兩個查詢方法: No.1 : Map<String,List<Tree>> arrMap = queryGroupToMap();//
將扁平資料轉換為tree型資料
<script type="text/javascript"> var meun_list = [ { id:'1', meun_name:'設定', meun_url:'', parent_id:0 }, {
js對json資料處理,將同一省裡的多條資料合併為一條資料
test:function(){ var arr =[ {pName:'內蒙古',pId:'1',cName:'內1',cId:'11'}, {pName:'內蒙古',pId:'1',cName:'內2',cId:'12'},
使用VS2013將JSON/XML資料轉換為對應的資料實體
VS2013中提供了將JSON資料轉換為對應的資料實體類的功能,很大程度上提高開發效率,具體轉換步驟如下 1、首先我們需要將需要轉換的JSO資料【複製】,例如下面這段json資料: { "name": "JSON中國", "url": "http://www.json.org.cn", "page": 8
如何將json資料轉換為常見的資料格式
從json陣列中得到java陣列,可以對該陣列進行轉化,如將JSONArray轉化為String型、Long型、Double型、Integer型、Date型等等。 分別採用jsonArray下的getString(index)、getLong(index)、getDouble(index)、ge
mysql select 資料型別為 bigint 的資料
資料庫欄位的值,資料型別為 bigint 成員變數的基本資料型別為 Boolean 查詢的語句: SELECT * FROM TABLE A WHERE isInnerClerk = 0 // 0 : false( b'0' ) 1: true(
將excel表格資料轉換為xml文字資料
這篇blog主要是講述java中poi讀取excel,並將excel中的資料轉化為xml文字中的資料,而excel的版本包括:2007之前和2007之後兩個版本, 即excel的字尾名為:xls和xlsx。 該專案的目錄結構如下圖: 專案中所需要的jar包如圖
sql裡將重複行資料合併為一行,資料用逗號分隔(張高偉)
一.定義表變數 DECLARE @T1 table ( UserID int , UserName nvarchar(50), CityName nvarchar(50) ); insert into @T1 (UserID,UserName,CityName) values (1,'a','上海') i
sql語句查詢資料庫,結果集為json資料以供前端、後臺使用
分析: 查詢結果轉換成json需要經過兩個步驟,首先將查詢結果轉成XML資料,然後通過XML資料轉成json。程式碼如下,程式碼部分來源於網路。 一、將查詢結果轉成XML資料 //其中@PSQL 為要查詢的語句,@XML XML格式資料,@XMLStr
json資料轉換為樹形json
var nodes = [ {"id":2,"cname":"第一級1","ipid":0,"ccode":"1"}, {"id":3,"cname":"第一級1","ipid":2,"ccode":"1"}, {"id":4,"cname
ajax請求後臺得到json資料後動態生成樹形下拉框
<select id="cc" class="easyui-combotree" style="width:580px;" name="rempId" data-options="required:true"></select> <scri
使用jquery中ztree,根據傳入的Json資料不能顯示樹形結構
ztree不能顯示樹形結構的原因有多種,這裡我只說我遇到的情況,首先我確認我自己在JSP頁面中能接收到傳入的json資料,其次,我確定我傳入的資料是正確的(太年輕),但是就是一種無法正常的顯示樹形結構,除錯了半天,我開始懷疑我的傳入的json資料還不是有問題,然後我用json校驗工具對我
使用jdbc向資料庫中注入大量資料(以10W條資料批量插入為例)
例項:10w條資料的插入(批量插入) import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class HomeWork02 { //預
Jmeter-JDBC獲取資料庫資料並作為變數傳輸
版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/kangi/article/details/81670796 一、新增資料庫對應引入的jar包: oracle:oracle資料安裝目錄下\product\12.1.0\clie
將資料庫的資料轉換為excel檔案下載到本地的方法中遇到的困難及解決方案
以下是將資料庫的資料轉換為excel檔案下載到本地的方法 @Autowired private BooksService booksService; @RequestMapping("/downloadBooksExcel") public void down
mui 之ajax遇到的坑 後臺接受資料為空 後端服務為php
mui.ajax的官方模板為 mui.ajax(Host+'/app/index/newsinfo',{ data:{id:newsId}, dataType:'json',//伺服器返回
ant design 如何將後臺傳送的帶特殊字元的資料轉義為html解析
目錄 問題場景 解決 拓展 問題場景 ant design 是基於React實現的元件庫,會將\n這樣的特殊字元轉成空格,但是我們想讓資料顯示在前端介面上,怎麼做呢? 解決 首先,將data中的\n替換為<br > 因為ant design 直
微信小程式 -- 後臺接收資料為json
wx.request({ url:'', header:{ "Content-Type":'application/json' }, method:"POST",
前臺通過js 寫個ajax請求把資料傳給後臺,然後後臺接收到這個資料, 再儲存到資料庫。。
//前端js操作: function testAjax(){ var url="/testAjaxUrlJson/";//後臺接收處理url var txtContent= "textprm";//傳輸內容; var objData = [ { name