這裡的業務場景是 分類 比如:電影分類中有 動作電影 ,愛情電影,愛情動作電影等。
create
table
`vc_col`
(`col_id`
bigint(20
)not
null
auto_increment
comment
'分類id'
,`parent_id`
bigint(20
)default
null
comment
'父id'
,`ancestors`
varchar
(100
)default
null
comment
'祖級列表'
,`col_name`
varchar(50
)default
null
comment
'分類名稱'
,`order_num`
int(4)
default
null
comment
'顯示序列',`
status
`char(1
)default
null
comment
'狀態'
,`del_flag`
char(1
)default
'0'comment
'刪除標誌(0代表存在 2代表刪除)'
,`create_by`
varchar(64
)default
''comment
'建立者'
,`create_time`
datetime
default
null
comment
'建立時間'
,`update_by`
varchar(64
)default
''comment
'更新者'
,`update_time`
datetime
default
null
comment
'更新時間'
,primary
key(
`col_id`))
engine
=innodb
auto_increment=14
default
charset
=utf8 comment
='分類'
;
public
class
colimplements
serializable
這裡是查全部 有需要調優的同學自行調優
select col_id, parent_id, ancestors, col_name, order_num,
status
, del_flag,
from vc_col
採用遞迴演算法實現,學思路就可以。
/**
* 查詢所有 父節點+子節點 父子->孩子格式的json
* @return
*/@override
public list
findcolandchildren()
linkedlist
collinkedlist =
newlinkedlist
<
>()
; collist.
foreach
(data-
>})
; collinkedlist.
foreach
(data-
>);
return collinkedlist;
}//遞迴獲取children節點
private list
getchildren
(long parentid,list
collist)})
;// 遞迴退出條件
if(collinkedlist.
size()
==0)// 把子選單的子選單再遞迴迴圈一遍
collinkedlist.
foreach
(data-
>);
return collinkedlist;
}
/**
* 查詢所有 父節點+子節點 父子->孩子格式的json
* @return
*/("/findcolandchildren"
)@responsebody
public ajaxresult findcolandchildren()
return
error
("沒有查到相應的資料!");
}
最後出來的格式是這樣的 我只最了兩級的資料,這個是可無限極的,沒來的及做。
,
]},,
]},]},
]}], "code"
:"0"
}
僅供參考,若有錯誤,望大佬指正。 無限級遞迴
無限級遞迴 例一 public function recursion public function cate info,child,pid return child 返回生成的樹形陣列 例二 public function recursion public function cate info,c...
遞迴遍歷無限級分類
有時候我們會有這樣的需求。將一張無限級分類表,處理好層級關係 例如,選擇選擇部門的上級關係 表資料格式。pid 0 為頂級 id pid name 1 0 行政 2 1 主管 3 0 人事 4 3 經理 5 4 員工轉換格式為以下格式,普通現實方法為,使用sql一層層去查詢。我們可以一次把所有資料拿...
PHP 無限級分類 遞迴
arr array array id 1,name 電腦 pid 0 array id 2,name 手機 pid 0 array id 3,name 筆記本 pid 1 array id 4,name 台式電腦 pid 1 array id 5,name 智慧型機 pid 2 array id 6...