每当我实现一个RowMapper时,它总是期望某种域对象可以构造一个对象。这是强制性的吗?我有一个约10,000行的表。最终目标是迭代这些行中的每一行并创建某些列值的HashMap,这些值将一次传递给另一个服务。
我不想在Java内存中创建并返回10,000个无用的对象,只是为了返回并在事后构造哈希映射。我希望动态地构造散列图,并通过函数传递行数据,然后移动到下一行,基本上丢弃前一行的数据。
我的出发点是我有一个jdbcOperations的引用(所以我可以访问查询等方法)。既然我可以访问这个对象,那么在10,000行表中逐个逐一进行的最佳方法是什么,在 EACH 行上,使用ResultSet值构造一个HashMap?
由于
答案 0 :(得分:1)
这听起来像你想要的而不是设计用于将每一行映射到一个对象的RowMapper
,你想要一个ResultSetExtractor
来返回一个对象。
如果没有看到您的代码,那么很难具体,但以下内容(未经测试):
Map<Whatever, Whatever> finalMap = jdbcOperations.query(sql, args, new ResultSetExtractor() {
Map<Whatever, Whatever> extractData(ResultSet rs) throws SQLException, DataAccessException {
Map<Whatever, Whatever> map = new HashMap<>();
while (rs.next()) {
// put stuff into your map
}
return map;
}
});