1

我有一个从 getJdbcTemplate().query 返回的对象列表

看起来像这样

object(test,test,test,1)
object(test,test,test,2)
object(test,test,test,3)

我怎样才能将这些转换成一个看起来像这样的对象

object(test,test,test,list<t>({1,2,3}))

希望你能从我的绳索伪对象表示中得到这个想法:)

4

4 回答 4

1

JdbcTemplate处理行,因此您需要RowMapper提取值并将它们转换为自定义类型的列表(实现与此结构对应的类object(test,test,test,1))。然后您可以处理提取的值并从列表值中组装您的新对象。

参考:

于 2011-02-08T14:17:31.920 回答
1

我认为使用RowMapper可能会有点痛苦。也许,你可以做这样的事情(顺便说一句,这是我的伪):-

List<Map> rows = getJdbcTemplate().queryForList(sql);

MyObject obj = null;

for (Map row : rows) {
    // configure the first 3 fields upon object creation.
    if (obj == null) {
        obj = new MyObject(row.get("firstField"), row.get("secondField"), row.get("thirdField"));
    }   

    // basically add each item into the list 
    obj.addToList(row.get("fourthField"));
}
于 2011-02-08T14:22:45.753 回答
0

你不能使用二维数组吗?

http://www.willamette.edu/~gorr/classes/cs231/lectures/chapter9/arrays2d.htm

我是java的菜鸟,所以如果我不正确,请原谅我的无知。

于 2011-02-08T14:16:17.113 回答
0

扩展您的对象模型。

您需要创建一个新对象,类似于您使用单个值参数创建的对象,而是将列表或集合作为最终参数。您的对象将在那里存储一个列表或一个集合,而不是在那里存储单个值。如果创建对象后此列表或集合将是不可变的,则应考虑int[]在存储数据之前将数据转换为。

然后,在这个新对象上构建您需要的任何方法。您甚至可以编写一个方法来返回一个旧对象数组,其中每个对象只有一个值。

于 2011-02-08T14:17:16.853 回答