我有一个从 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}))
希望你能从我的绳索伪对象表示中得到这个想法:)
我有一个从 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}))
希望你能从我的绳索伪对象表示中得到这个想法:)
JdbcTemplate
处理行,因此您需要RowMapper
提取值并将它们转换为自定义类型的列表(实现与此结构对应的类object(test,test,test,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"));
}
你不能使用二维数组吗?
http://www.willamette.edu/~gorr/classes/cs231/lectures/chapter9/arrays2d.htm
我是java的菜鸟,所以如果我不正确,请原谅我的无知。
扩展您的对象模型。
您需要创建一个新对象,类似于您使用单个值参数创建的对象,而是将列表或集合作为最终参数。您的对象将在那里存储一个列表或一个集合,而不是在那里存储单个值。如果创建对象后此列表或集合将是不可变的,则应考虑int[]
在存储数据之前将数据转换为。
然后,在这个新对象上构建您需要的任何方法。您甚至可以编写一个方法来返回一个旧对象数组,其中每个对象只有一个值。