遞歸查詢

1、準(zhǔn)備表結(jié)構(gòu)及對(duì)應(yīng)的表數(shù)據(jù)
a、表結(jié)構(gòu):

create table TB_TREE
(
CID NUMBER not null,
CNAME VARCHAR2(50),
PID NUMBER //父節(jié)點(diǎn)
)
b、表數(shù)據(jù):

insert into tb_tree (CID, CNAME, PID) values (1, '中國(guó)', 0);
insert into tb_tree (CID, CNAME, PID) values (2, '北京市', 1);
insert into tb_tree (CID, CNAME, PID) values (3, '廣東省', 1);
insert into tb_tree (CID, CNAME, PID) values (4, '上海市', 1);
insert into tb_tree (CID, CNAME, PID) values (5, '廣州市', 3);
insert into tb_tree (CID, CNAME, PID) values (6, '深圳市', 3);
insert into tb_tree (CID, CNAME, PID) values (7, '海珠區(qū)', 5);
insert into tb_tree (CID, CNAME, PID) values (8, '天河區(qū)', 5);
insert into tb_tree (CID, CNAME, PID) values (9, '福田區(qū)', 6);
insert into tb_tree (CID, CNAME, PID) values (10, '南山區(qū)', 6);
insert into tb_tree (CID, CNAME, PID) values (11, '密云縣', 2);
insert into tb_tree (CID, CNAME, PID) values (12, '浦東', 4);
2、TreeNode對(duì)象,對(duì)應(yīng)tb_tree

public class TreeNode implements Serializable {
private Integer cid;
private String cname;
private Integer pid;
private List nodes = new ArrayList();
 
public TreeNode() {
}
 
//getter、setter省略
}

3、測(cè)試數(shù)據(jù)

public class TreeNodeTest {
@Test
public void loadTree() throws Exception{
System.out.println(JsonUtils.javaToJson(recursiveTree(1)));
}

/**

  • 遞歸算法解析成樹形結(jié)構(gòu)
  • @param cid
  • @return
  • @author jiqinlin
    */
public TreeNode recursiveTree(int cid) {
//根據(jù)cid獲取節(jié)點(diǎn)對(duì)象(SELECT * FROM tb_tree t WHERE t.cid=?)
TreeNode node = personService.getreeNode(cid);
//查詢cid下的所有子節(jié)點(diǎn)(SELECT * FROM tb_tree t WHERE t.pid=?)
List childTreeNodes = personService.queryTreeNode(cid); 
//遍歷子節(jié)點(diǎn)
for(TreeNode child : childTreeNodes){
TreeNode n = recursiveTree(child.getCid()); //遞歸
node.getNodes().add(n);
}
 
return node;
}
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容