遞迴的方式查詢出多級目錄

2021-10-08 13:37:45 字數 1286 閱讀 7743

1:資料庫關係(mysql)

id (自增的id)

pid(父級目錄的id)

rolename(目錄名稱)10

一級目錄21

二級目錄32

**目錄43

四級目錄

2:程式持久層**

2-1:程式持久層介面

/**

* 通過pid查詢單條資料

* @param pid 父級主鍵

* @return 例項物件

*/list

querybypid

(integer pid)

;

2-2:程式持久層介面對映xml

"querybypid" resultmap=

"role"

>

select

id, pid, rolename

from digui.table_test

where pid = #

<

/select>

這裡的持久層是通過 父級的pid查詢出對應的所有目錄資訊,以乙個集合的形式返回

2:遞迴獲取所有的目錄(重點來了)

@override

public list

findallrole()

private list

out(int i)

}return list;

}

解釋:

1:首先我在findallrole方法中先第一此呼叫out方法,因為我們傳入的引數是pid(父級id),一級目錄的pid我們預設是0(隨意),所以我們呼叫out方法時傳入的引數時0

2:在out方法中我們首先先呼叫持久層介面,通過傳入的引數pid獲取所有的目錄,這個時候我們需要判斷集合的長度,如果長度為0,說明這個pid對應的子目錄是沒有的(這個點注意,這個集合可能是一級目錄集合,也可能是二三四級目錄)。反之我們遍歷,然後將遍歷的每乙個元素作為父級目錄查詢出子集然後set到實體中,看**,看不懂就細品

最後貼出我最後查出來的結果:

}

]}]}

]

多級查詢採用遞迴和迴圈的方式詳解

燚軒科技以20級為例,編寫的 和執行效果如下 1.php查詢每級人數。php 如下 aim prevtel tel n 0 array co array while n 10 return array co 2.php查詢每級的個人資訊 php 如下 aim prevtel 15639743913 ...

mssql多級查詢 CTE遞迴

最近做乙個製造業專案中涉及到打包問題,其模式為 乙個a b c 可以無限打包,a包含b,b包含c等。之間遇到了 1 打包後包裹數量需要更新,更新時必須對他的父級包號也進行更新,所以必須查詢出某個包號對應的所有父級包號 2 拆包 將包裹拆除,希望把a下面的包裹號也連同一起拆除,這樣必須查詢出某個包號對...

遞迴方法繫結多級動態目錄

在程式設計中很可能使用到多級動態目錄,如果使用一般的方法將多級目錄繫結到treeview就顯得非常侷促了,所以,最好的辦法就是使用遞迴,使用遞迴就完全不用去考慮目錄的層次有多深.其實很簡單.view code 1 protected void page load object sender,even...