我想以分层方式从 SQL 表中读取项目。例如,我的表有父子关系。以下是我的表结构:
id name parentId
1 abc null
2 xyz 1
3 lmn 1
4 qwe null
5 asd 4
所以我想一次性加载所有的项目,我该怎么做?我试过 HashMap 但感觉很复杂....提前谢谢...
我想以分层方式从 SQL 表中读取项目。例如,我的表有父子关系。以下是我的表结构:
id name parentId
1 abc null
2 xyz 1
3 lmn 1
4 qwe null
5 asd 4
所以我想一次性加载所有的项目,我该怎么做?我试过 HashMap 但感觉很复杂....提前谢谢...
您可以通过一个 SQL 查询来检索整个层次结构,但该查询取决于数据库系统——例如,Oracle 支持对层次结构查询使用“CONNECT BY”查询。MySQL 不直接支持这一点——但是在 MySQL 的 Hierachical Queries 中解释了一些非常好的方法。我建议您尝试其中一种。基本方法是创建一个模仿 CONNECT BY 的函数。
首先,形成您的问题,不清楚您是否需要 SQL 方面或 java 数据结构方面的帮助。
我假设两者,即您需要从数据库中获取数据,然后填充适当的 java 数据结构。
所以没有直接的方法。你的数据主要是TREE STRUCTURE,所以主要需要关注java的tree数据结构。因此,以下是您需要采取的步骤。
1)首先为树形结构创建java类结构。请参阅下面的链接。
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数据使你的树类结构自构造。