2017-04-26 26 views
-1

每当我实现一个RowMapper时,它总是期待某种可以构造对象的域对象。这是强制性的吗?我有一张约10,000行的表格。最终目标是对每一行进行迭代,并创建一个特定列值的HashMap,这些列值将一次传递给另一个服务。如何使用JDBCOperations一次查询一行数据库表,然后返回void,然后根据值构造一个hashmap?

我不想在Java内存中创建并返回10,000个无用对象,只是为了回过头来构建事后的hashmaps。我想通过函数传递行的数据来动态构造hashmaps,然后移动到下一行,基本上抛弃前一行的数据。

我的出发点是我有一个jdbcOperations的引用(所以我可以访问诸如查询之类的方法)。现在我可以访问这个对象,在10000行的表中逐字逐行去执行的最好方法是什么,并且使用ResultSet值构造一个HashMap?

感谢

回答

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; 
    } 
}); 
+0

我只是想从字面上迭代上的数据库表的每一行,构建一个HashMap <字符串,对象>超出每行的结果集数据。 –

+1

你是说你想要构建一个hashmap的每一行,然后用这些数据调用另一个对象?实际上,你不需要从操作中返回任何东西? – tddmonkey

+0

是的。我在另一个线程上找到了答案,解决方案是不使用RowMapper,而是使用RowCallbackHandler。 –

相关问题