public class TreeDAO{
public String readTree(int id,int level){
String str = "";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "SELECT * FROM earth WHERE pid=?";
try{
conn = DBConnect.getConn();
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();
while(rs.next()){
for (int i = 0; i < level; i++) {
str += "-->>";
}
str += rs.getInt("id")+"="+rs.getString("name")+"\n";
str += readTree(rs.getInt("id"),++level);
--level;
}
}catch(Exception e){
e.printStackTrace();
}finally{
DBConnect.closeRs(rs);
DBConnect.closePstmt(pstmt);
DBConnect.closeConn(conn);
}
return str;
}
public static void main(String[] args) {
TreeDao treeDao = new TreeDao();
String str = treeDao.readTree(0, 1);
System.out.println(str);
}
}
CREATE TABLE `earth` (
`id` int(11) NOT NULL,
`pid` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#
# Dumping data for table earth
#
INSERT INTO `earth` VALUES (1,0,'亚洲');
INSERT INTO `earth` VALUES (2,0,'欧洲');
INSERT INTO `earth` VALUES (3,0,'美洲');
INSERT INTO `earth` VALUES (4,0,'非洲');
INSERT INTO `earth` VALUES (5,1,'中国');
INSERT INTO `earth` VALUES (6,1,'小日本');
INSERT INTO `earth` VALUES (7,1,'棒子');
INSERT INTO `earth` VALUES (8,3,'美国');
INSERT INTO `earth` VALUES (9,5,'北京');
INSERT INTO `earth` VALUES (10,5,'上海');
INSERT INTO `earth` VALUES (11,5,'西安');
INSERT INTO `earth` VALUES (12,9,'北京大学');
INSERT INTO `earth` VALUES (13,11,'西安交大');
out:
-->>1=亚洲
-->>-->>5=中国
-->>-->>-->>9=北京
-->>-->>-->>-->>12=北京大学
-->>-->>-->>10=上海
-->>-->>-->>11=西安
-->>-->>-->>-->>13=西安交大
-->>-->>6=小日本
-->>-->>7=棒子
-->>2=欧洲
-->>3=美洲
-->>-->>8=美国
-->>4=非洲
分享到:
相关推荐
当调用`GetData`时,它会查找与给定ID匹配的所有子菜单(通过`GetParentArry`函数),并为每个子菜单创建一个新的`<li>`元素,然后递归调用自身来处理子菜单的子菜单。`GetParentArry`函数则负责找到所有父ID等于...
总的来说,这个例子展示了如何在MySQL中使用存储过程实现递归调用来获取树形结构中的子树。这种方法适用于对数据库性能要求不高的情况,对于大数据量的树结构,可以考虑优化查询策略或使用其他数据结构来提高性能。
在MySQL中,构建和操作树形结构数据是一个常见的需求,特别是在组织层次结构、菜单系统或者类别管理等场景。本PDF文档介绍了一种方法,通过递归调用存储过程来获取树节点及其子树。以下是对相关知识点的详细说明: ...
使用递归算法结合数据库解析成Java树形结构的代码解析是指通过递归算法解析数据库中的树形结构数据,并将其转换为Java树形结构的过程。 首先,需要准备好表结构及对应的表数据。在这个示例中,我们创建了一个名为TB...
这个方法通常接收一个菜单列表(根据数据库查询结果),然后通过递归的方式将菜单组织成树形结构: ```java import java.util.ArrayList; import java.util.List; public class MenuTreeBuilder { public static...
根据数据中是否存在 `pid` 属性,判断当前项是否为父节点,从而决定是否递归调用自身生成子菜单。 `st` 方法将生成的HTML插入到指定ID的元素中,完成菜单的渲染。这使得我们可以将数据与界面绑定,实现数据驱动的...
而createTree方法则是用来从一级科目开始构建树形菜单数据的主方法,它会调用createSubTree方法来获取子数据,并返回完整的树形结构。 在createSubTree方法中,判断科目是否为末级科目,如果不是末级科目,则会继续...
在下拉列表中实现多级树形菜单是前端开发中一个常见且实用的功能,它能够有效地组织层级信息,提升用户界面的可用性和美观性。在本篇文章中,将详细介绍如何使用JavaScript实现这一功能,具体包括JavaScript属性菜单...
根据提供的文件信息,...接着,对每个新创建的菜单项递归调用`CreatBranch`方法以构建子菜单。 以上就是从给定文件中提炼出的主要知识点,包括递归的基本概念、C#中递归的应用示例、注意事项以及其他相关的知识点。
通过上述示例,我们可以看到使用`WITH`语句进行递归查询是一种非常有效的方式来处理树形结构数据。这种方式不仅可以帮助我们轻松地获取某个节点的所有子节点或父节点,而且还能方便地记录它们之间的层级关系。这对于...
在JavaScript中,无限级递归树的实现通常用于处理层级关系的数据,如地区级联、组织架构或菜单树等。本文将深入探讨如何使用JavaScript从扁平化的数组数据构建无限级递归树的两种方法。 首先,我们来看一下给定的...
- 对每个菜单项,再次调用 `RootMenu` 函数,传入当前菜单项的 `ID` 和更新后的层级数,以递归获取子菜单。 3. **HTML输出**: - 在PHP脚本的最后,创建了一个 `<select>` 元素,用于展示下拉树。默认选项是“请...
递归CTE的核心在于`WITH`关键字,它允许我们定义一个临时的结果集,这个结果集可以在查询中重复使用,包括递归调用自身。在树形查询中,我们通常需要两种类型的查询:从子节点找到所有父节点,以及从父节点找到所有...
这主要因为树形结构数据需要能够自我包含和扩展,而递归指令恰好能够处理这种自引用的情况。本示例将详细介绍如何通过AngularJS创建一个可扩展和交互的Tree View。 首先,我们需要定义数据结构。在上述例子中,数据...
本文将详细介绍如何通过自定义函数在MySQL中实现递归查询父级ID和子级ID。 首先,我们需要一个表示层级关系的数据表。假设我们有如下的`table_name`表结构: ```sql CREATE TABLE `table_name` ( `id` int(11) ...
2. **递归查询示例** 在给出的例子中,我们有一个名为`test`的表,包含`pid`(父ID)和`id`(当前ID)字段。我们想要找出所有pid为'a'的子项。SQL语句如下: ```sql SELECT parent, child FROM test START WITH ...
随后,递归调用recursion函数本身,传入剩余的数据集和当前子项的id作为新的$pid参数,以此实现逐级向下查找子项的功能。 最终,函数返回了$child数组,其中包含了所有子级数据,这些数据根据层级关系进行了重新...
通过递归调用自身,直到所有的子菜单都构建完成为止。 ### 四、总结 通过上述分析,我们可以看出这段代码展示了如何使用Java后端技术结合`Gson`库构建一个JSON格式的多级菜单数据,并通过`Struts2`框架将这些数据...