Java实现数据库构建树形

Java实现数据库构建树形

根据数据库中数据结构来构建树形,至少需要三个字段。
ParentID:指的是该节点的节点id;
SonID:指的是该节点的父节点id;
NodeName:节点的名称。
如下图可见第二条和第三条数据的SonID是第一条数据的ParentID,因此节点1和节点2的父节点是0。
在这里插入图片描述

数据库录入数据后,接下来需要一个方法将数据传递给jsp,方法中先创建一个list集合,list集合内的对象是一个map集合,再查询出数据库中的树形表,使用foreach将ParentID、SonID、NodeName放入map集合再放入list集合中,传递给jsp。

private void SelectCustomerClassificationTree(HttpServletRequest request, HttpServletResponse response) throws IOException {
	response.setContentType("text/json;charset=utf-8");
	List<Map<String, Object>> jsonlist = new ArrayList<Map<String, Object>>();
	PrintWriter out = response.getWriter();
	List<CustomerTree> CustomerTree = Service.SelectCustomerTree();
	for(CustomerTree customertree: CustomerTree){
		Map<String, Object> jsonobj = new HashMap<String, Object>();
		jsonobj.put("id", customertree.getCustomerParentID());//节点id
		jsonobj.put("pId", customertree.getCustomerSonID());//父节点id
		jsonobj.put("name", customertree.getCustomerNodeName());//节点名称
		jsonlist.add(jsonobj);
	}
	out.write(ToJsonUtil.toJson(jsonlist));
}

在jsp中需引用zTree_v3插件,zTree_v3.jar百度云下载链接;提取码:f1gp。在这里插入图片描述
构建树形代码如下:

<script>
	$(function(){
		$.ajax({
			type:"Get",
			url:"${ctx}/servlet/MainServlet?type=SelectCustomerClassificationTree",
			async:false,
			success:function (d) {
				$.fn.zTree.init($("#treeDemo"), setting, d.data);
			}
		});
	});
	var setting = {
		check: {
			enable: false,
			chkStyle: "checkbox",
			chkboxType: { "Y": "ps", "N": "ps" },
			isSimpleData: true,//数据是否采用简单 Array 格式,默认false
			treeNodeKey: "id",//在isSimpleData格式下,当前节点id属性
			treeNodeParentKey: "pId",//在isSimpleData格式下,当前节点的父节点id属性
			showLine: true, //是否显示节点间的连线
			checkable: true
		},
		data: {
			simpleData: {
				enable: true
			}
		},
		callback: {
			onClick: zTreeOnClick
		}
	};
	//popZtree(setting);
	function zTreeOnClick(event, treeId, treeNode) {
		alert(treeNode.tId + "," + treeNode.treeNode);
	};
</script>

Jsp页面内容如下:

<body>
	<div class="zTreeDemoBackground">
		<ul id="treeDemo" class="ztree"></ul>
	</div>
</body>

树形实现图:
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的Java代码示例,使用MySQL数据库实现树形结构图。 1. 创建MySQL数据库表 在MySQL数据库中创建一个名为“tree”的表,包含以下字段: - id:节点的唯一标识符,类型为INT - name:节点的名称,类型为VARCHAR - parent_id:父节点的ID,类型为INT CREATE TABLE tree ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), parent_id INT ); 2. 创建Java类 创建一个名为“TreeNode”的Java类,用于表示树节点。该类包含以下属性: - id:节点的唯一标识符,类型为int - name:节点的名称,类型为String - children:子节点列表,类型为List<TreeNode> public class TreeNode { private int id; private String name; private List<TreeNode> children; public TreeNode(int id, String name) { this.id = id; this.name = name; this.children = new ArrayList<>(); } // getter and setter methods omitted for brevity } 3. 实现树的构建方法 创建一个名为“buildTree”的静态方法,用于从MySQL数据库中读取数据并构建树结构。该方法使用递归算法实现。 public static TreeNode buildTree(Connection conn, int parentId) throws SQLException { String sql = "SELECT * FROM tree WHERE parent_id = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setInt(1, parentId); ResultSet rs = stmt.executeQuery(); TreeNode parent = null; while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); TreeNode node = new TreeNode(id, name); if (parent == null) { parent = node; } else { parent.getChildren().add(node); } buildTree(conn, id); } return parent; } 4. 测试代码 在main方法中创建一个MySQL数据库连接,并调用buildTree方法构建树结构。 public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { TreeNode root = buildTree(conn, 0); // TODO: traverse the tree and display it } catch (SQLException e) { e.printStackTrace(); } } 上述代码中的TODO部分应该是遍历树并在控制台上显示它的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新鑫S

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值