java - 从 SQL 到 HTML UL 的树状结构

标签 java sql tree

我的数据库中有一个树状结构。

我有一个查询,它返回按照我希望的显示方式排序的记录。

SELECT branch_id, branch_name, parent_branch_id, level FROM dw_branches
start WITH parent_branch_id IS NULL
connect BY PRIOR branch_id = parent_branch_id 

返回类似这样的内容

| branch_id | branch_name | parent_branch_id | level|
|         1 | one         |                  |     1|
|         2 | two         |                1 |     2|
|         3 | three       |                1 |     2|
|         4 | four        |                2 |     3|
|         5 | five        |                1 |     2|
|         6 | six         |                5 |     3|

在 Java 中,我有一个 Branch 对象,它具有所有这些参数(id、name、parent_id、level)。

我想在 JSP 中进行输出,最终看起来像这样:

<ul>
    <li>one
        <ul>
            <li>two
                <ul>
                    <li>four</li>        
                </ul>
            </li>
            <li>three</li>
            <li>five
                <ul>
                    <li>six</li>        
                </ul>
            </li>           
        </ul>
    </li>
</ul>

基本上,我想嵌套 ul/li 以便使用 http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ 显示数据

关于如何做到这一点有什么建议吗?

最佳答案

  • 定义一个名为“children”的 Node 数据结构。
  • 创建 Map<Integer,Node>您可以在其中通过 id 查找数据结构。
  • 迭代 SQL ResulSet,查找或创建每条记录的父节点,并将子节点添加到父节点。
  • 获取根级节点并使用递归将其输出到字符串。

粗略代码示例:

Node {
  String name;
  List<Node> children = new LinkedList<Node>();

  void appendHTML(StringBuilder toAppendTo) {
    toAppendTo.append("<li>").append(name);
    if (!children.isEmpty()) {
      toAppendTo.append("<ul>");
      for ( Node child : children ) {
        child.appendHTML(toAppendTo);
      }
      toAppendTo.append("</ul>");
    }
    toAppendTo.append("</li>");
  }
}

关于java - 从 SQL 到 HTML UL 的树状结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471996/

相关文章:

java - 使用 BufferedImage 创建非常大的图像文件,奇怪的问题取决于编译和计算机(-Xmx 不起作用)

python - 平面文件NoSQL解决方案

c - 使用级别顺序在 n 叉树中输入元素

Extjs 树形面板 : CSS to change default icons (node and leaf)

java - Spring Boot 中 Repository 默认 "findById"函数的运行时是多少?

java - 在不向客户端公开方法的情况下更新 JMX MBean 属性

java - 如何明智地对特定字段的数据进行分组?

sql - 针对存储过程 SQL Server 进行 SELECT

MySQL世界数据库sql文件插入数据时出现语法错误

algorithm - 有多少棵恰好有 11 个节点的有根二叉树是pleaserees?