从数据库中读取数据列表,通过后台代码将数据转换成树形,代码如下
/**
* 树节点
*
*/
public class TreeNode{
//节点id
private String id;
//父节点id
private String parentId;
//文本
private String text;
//节点状态
private String state = "open";
//是否选中
private Boolean isChecked = false;
//子节点集合
private List<TreeNode> children;
public TreeNode(){}
public TreeNode(String parentId,String id,String text){
this.id = id;
this.parentId = parentId;
this.text = text;
}
public TreeNode(String id,String parentId,String text,String state, Boolean isChecked){
this.id = id;
this.parentId = parentId;
this.text = text;
this.state = state;
this.isChecked = isChecked;
}
/**
* 返回json
* @return
*/
/* public String toJsonString(){
String result = "{"
+ "\"id\" : \"" + id + "\""
+ ", \"text\" : \"" + text + "\"";
if (children != null && children.size() != 0) {
result += ", \"children\" : " + children.toString();
} else {
result += ", \"leaf\" : true";
}
return result + "}";
}*/
//get set
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Boolean getIsChecked() {
return isChecked;
}
public void setIsChecked(Boolean isChecked) {
this.isChecked = isChecked;
}
public List<TreeNode> getChildren() {
return children;
}
public void setChildren(List<TreeNode> children) {
this.children = children;
}
}
/**
* 将list展示成一棵树
*
*/
public class ShowTreeUtils {
/**
* 将list转换成tree
* @param list
* @return
* @throws IOException
*/
public static String showTree(List<TreeNode> menuList) throws IOException{
List<TreeNode> nodeList = new ArrayList<TreeNode>(); //存放父节点的list
for(TreeNode node1 : menuList){
boolean isChildMark = false; //标志该节点是否是子节点,isChildMark为false表示不是子节点
for(TreeNode node2 : menuList){
if(node1.getParentId()!=null && node1.getParentId().equals(node2.getId())){
isChildMark = true;
if(node2.getChildren() == null){
node2.setChildren(new ArrayList<TreeNode>());
}
node2.getChildren().add(node1);
//node2.setState("closed");
break;
}
}
if(!isChildMark){
nodeList.add(node1); //将父节点放到nodeList中
}
}
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(nodeList);
return json;
}
}
//测试类
public class TreeTest {
public static void main(String[] args) throws IOException {
List<TreeNode> menuList = new ArrayList<TreeNode>();
TreeNode root = new TreeNode("000000000000", "500000000000", "公共通讯录目录"); //根节点
TreeNode root1 = new TreeNode("000000000000", "600000000000", "个人通讯录目录"); //根节点
TreeNode b = new TreeNode("500000000000", "63000000000000000001", "青海省民政厅");
TreeNode c = new TreeNode("63000000000000000001", "63010000000000000002", "西宁");
TreeNode d = new TreeNode("63010000000000000002", "63010200000000000004", "城东");
TreeNode e = new TreeNode("63000000000000000001", "63210000000000000011", "海东");
TreeNode f = new TreeNode("63210000000000000011", "63212100000000000012", "平安");
TreeNode g = new TreeNode("63210000000000000011", "63212200000000000013", "民和");
TreeNode h = new TreeNode("63210000000000000011", "63212300000000000014", "乐都");
menuList.add(root);
menuList.add(root1);
menuList.add(b);
menuList.add(c);
menuList.add(d);
menuList.add(e);
menuList.add(f);
menuList.add(g);
menuList.add(h);
//转为json格式
String json = ShowTreeUtils.showTree(menuList);
System.out.println("json:"+json);
}
}
相关推荐
2. **数据解析**:对于树形结构数据,需要逐级解析,可能涉及到递归方法,将每一层的数据转换成Java对象。这些对象可能包含父节点、子节点以及相关属性。 3. **数据映射**:将Excel中的列名与Oracle数据库表的字段...
JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现是指将JSON复杂数据处理后的数据转换为Java对象,并将其存储到数据库中。这个过程需要使用JSON的java工具包API,将层次结构的JSON对象数组通过...
DOM将整个XML文档加载到内存中形成一个树形结构,便于访问;SAX是事件驱动的解析器,逐行读取文档,适用于处理大型XML文件;StAX则是流式解析,允许开发者以更灵活的方式处理XML数据。 接下来,我们将讨论如何使用...
Java解释XML是从数据库中提取XML数据并对其进行解析和处理的过程,这一过程涉及到Java的XML处理API,...理解并熟练掌握这些知识点,可以有效地在Java应用程序中处理XML数据,无论是从数据库读取还是将数据写入数据库。
在Java中,我们可以使用`Map, List<Category>>`这样的数据结构来存储树形结构,其中`Integer`是菜单ID,`List<Category>`是该菜单的子菜单列表。 前端部分,可以使用JavaScript库如jQuery或者现代的前端框架如Vue、...
在本文中,我们使用了递归算法来转换树形结构的数据,但是在其他情况下,我们可能需要使用其他算法或数据结构。 本文介绍了如何使用JAVA在后台将数据转换成树形结构,然后返回给前端。这种方法可以广泛应用于各种...
使用`Unmarshaller`可以从XML文件中创建Java对象,而`Marshaller`可以将Java对象转换回XML。 2. **导入数据到MySQL**: - 使用JDBC:首先,加载MySQL的JDBC驱动并通过`DriverManager.getConnection()`建立数据库...
在本篇文章中,我们将深入探讨这个过程,尤其是使用Java编程语言以及递归方法来实现。 首先,让我们理解数据库记录到XML字符串的转换。XML(Extensible Markup Language)是一种用于存储和传输数据的标记语言,其...
在这个“Java XML读取信息到数据库”的项目中,我们将探讨如何使用Java来实现这一功能,包括解析XML文件和与数据库进行交互的关键步骤。 首先,我们需要了解Java中解析XML的两种主要方法:DOM(Document Object ...
在IT行业中,构建一个具有层次结构的树形菜单是...递归方法在此过程中扮演了关键角色,它帮助我们将数据库中的扁平数据转换为易于理解和操作的树形结构。这个过程不仅适用于菜单,也适用于其他需要展示层次关系的数据。
这里我们讨论如何在Java中实现一个支持多根节点的树结构,并使用ZTree(一种流行的JavaScript库)进行展示。首先,我们需要理解树的基本概念。 **树结构基础** 树是一种非线性数据结构,由节点和边组成。每个节点...
**如何将数据库中的层次数据转换成对应的层次结构的JSON或XML格式的字符串,返回给客户端的JavaScript树形控件?** 这是一个关键问题,涉及到数据库中的层次数据结构与前端数据展示之间的桥梁建设。具体来说,数据...
Java代码会定义一个Controller,该Controller负责从数据库中读取数据,转换成树形结构,然后通过HTTP响应返回给前端。 综上所述,这个自定义的Ext树形菜单组件结合了前端的JavaScript技术(主要为ExtJS)和后端的...
总结起来,Java结合XML技术可以实现从数据库中获取数据并将其转换为易于存储和传输的XML格式。这一过程涉及到JDBC用于数据库操作,以及JAXB用于XML序列化和反序列化。理解这些核心技术对于Java开发者在处理数据交换...
总的来说,这个项目展示了如何将数据库中的数据通过JDBC获取,转换为JSON格式,然后利用ExtJS的动态加载机制在前端构建出可交互的树形结构。这涉及到前端与后端的交互、数据的序列化与反序列化,以及数据库操作等多...
- 查询数据库后,通常会将结果集转换为Java对象列表,然后使用JAXB或DOM方法将这些对象转换为XML结构。 - 如果需要自定义XML格式,可以通过Transformer设置输出格式,或者在创建DOM节点时指定节点属性。 5. **...
Java部分的代码展示了如何从数据库中读取数据并将其转换为JSON格式。首先,通过SQL语句查询出所有具有父节点的节点的`parentid`,然后使用StringBuilder和PreparedStatement来构建字符串,最终返回这个字符串。然而...
在Java编程中,解析XML文件并将其数据导入到数据库是一项常见的任务。在这个场景下,我们主要涉及两个核心技术:XML解析库和数据库操作。本篇将详细介绍如何使用DOM4J库来解析XML,并将解析得到的数据有效地导入到...
在这款源代码自动转换程序中,可能会使用到树形列表(Tree List)这一Java Swing组件。树形列表结合了表格和树控件的功能,允许用户以层级结构显示数据,同时支持表格的列式布局。这样的设计对于展示源代码文件结构...
通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...