1. 程式人生 > >資料庫樹形資料如何組裝為後臺樹形資料結構

資料庫樹形資料如何組裝為後臺樹形資料結構

我是在寫樹形選單時遇到的問題,樹形資料在資料庫中是一張表的自關聯儲存,在前臺解析的的是樹形的資料結構,就需要將查詢的一條條資料包裝為樹形結構。

有兩個方法:

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