将具有扁平列结构的结果集转换为分层数据结构
问题描述:
我有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这样的东西来做映射。
如果您决定这样做,我还建议重做您的表格,以便它们准确地反映您的对象结构。如果你只想要一个快速解决方案,可能不需要。但是,如果你正在寻求商业或企业软件的强大解决方案,这可能是一个好主意。
我还需要将这些数据作为XML流出,这可能是大量数据,因此我不希望将其存储在内存中,并在写出XML时进行某种惰性迭代。 – Eqbal 2012-03-29 01:18:48