【问题标题】:How to retrieve hierarchical items in one go from SQL table in any java structure for comparison?如何从任何 java 结构中的 SQL 表中一次性检索分层项目以进行比较?
【发布时间】:2012-10-25 05:49:26
【问题描述】:

我想从 SQL 表中读取分层方式的项目。例如我的桌子有亲子关系。 以下是我的表结构:

id    name    parentId

1     abc      null

2     xyz        1

3     lmn        1

4     qwe       null

5     asd        4

所以我想一次性分层加载所有项目,我该怎么做? 我试过HashMap,但感觉很复杂...... 提前谢谢...

【问题讨论】:

  • 你应该阅读 SELF JOINs

标签: java mysql structure parent-child hierarchy


【解决方案1】:

您可以通过一个 SQL 查询来检索整个层次结构,但查询取决于数据库系统 - 例如,Oracle 支持对层次结构查询使用“CONNECT BY”查询。 MySQL 不直接支持这一点 - 但 Hierachical Queries in MySQL 解释了一些非常好的方法。我建议您尝试其中一种。基本方法是创建一个模仿 CONNECT BY 的函数。

【讨论】:

    【解决方案2】:

    首先,形成您的问题,不清楚您是否需要 SQL 方面或 java 数据结构方面的帮助。

    我假设两者,即您需要从数据库中获取数据,然后填充到适当的 java 数据结构中。

    所以没有直接的方法。你的数据主要是TREE STRUCTURE,所以主要需要关注java的tree数据结构。下面是您需要采取的步骤。

    1) 首先为树形结构创建java类结构。请参阅下面的链接。

    Java tree data-structure?

    http://www.java2s.com/Code/Java/Collections-Data-Structure/Yourowntreewithgenericuserobject.htm

    http://www.codeproject.com/Articles/14799/Populating-a-TreeView-Control-from-the-Database

    2) 如果你最终需要 java 对象,那么你不需要太多的 sql 方面的东西。所以你可以做简单的选择查询来获取数据。

    3) 现在你需要一个辅助方法来使用类结构从步骤 1 中为你的数据准备树。如果你设计得更好,你的树类结构可以使用 SQL 数据自构造。

    【讨论】:

      猜你喜欢
      • 2022-08-23
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 2012-03-03
      • 2018-06-30
      • 2012-03-13
      相关资源
      最近更新 更多