将具有扁平列结构的结果集转换为分层数据结构

将具有扁平列结构的结果集转换为分层数据结构

问题描述:

我有java.sql.ResultSet中的db查询结果需要转换为分层数据结构。它看起来有点像这样:将具有扁平列结构的结果集转换为分层数据结构

name|version|pname|code|count 
n1|1.1|p1|c1|3 
n1|1.1|p1|c2|2 
n1|1.1|p2|c1|1 
n1|1.2|p1|c1|0 
n2|1.0|p1|c1|5 

我需要转换成一个分层数据结构:

N1 
+ 1.1 
    + p1 
    + c1(3) 
    + c2(2) 
    + p2 
    + c1(1) 
+ 1.2 
    + p1 
     + c1(0) 
N2 
+ 1.0 
    + p1 
    + c1(5) 

所以,我的数据结构可以是这个样子

Name { 
    String name 
    List<Version> versions 
} 

Version { 
    String version 
    List<PName> pnames 
} 

PName { 
    String pName 
    List<CodeCount> codeCounts 
} 

CodeCount { 
    String code 
    Integer count 
} 

任何人有任何建议/代码片段的最佳方式来做到这一点?

有几种方式,以及如何做到这一点取决于您的解决方案需要多么强大。

一种方法是只写几个在数据库中具有属性的对象。然后你可以得到结果集并迭代它,每当关键字段(例如“name”)发生变化时创建一个新对象,并将其添加到该对象的列表中。然后你会适当地设置属性。这是“快速和肮脏”的解决方案。

稍微更健壮的方法是使用像Hibernate这样的东西来做映射。

如果您决定这样做,我还建议重做您的表格,以便它们准确地反映您的对象结构。如果你只想要一个快速解决方案,可能不需要。但是,如果你正在寻求商业或企业软件的强大解决方案,这可能是一个好主意。

+0

我还需要将这些数据作为XML流出,这可能是大量数据,因此我不希望将其存储在内存中,并在写出XML时进行某种惰性迭代。 – Eqbal 2012-03-29 01:18:48