帮助转换Java列表/集合或其他东西

时间:2011-02-08 14:05:36

标签: java spring list jdbctemplate spring-jdbc

我有一个从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}))

Hopefuly你从我的绳索伪对象表示中得到了想法:)

4 个答案:

答案 0 :(得分:1)

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

<强>参考:

答案 1 :(得分: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"));
}

答案 2 :(得分:0)

难道你不能使用二维数组吗?

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

我有点像java的菜鸟,所以如果我不对,请原谅我的无知。

答案 3 :(得分:0)

扩展您的对象模型。

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

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