如何使用JDBCOperations一次查询一行数据库表,并返回void,然后根据值构造一个hashmap?

时间:2017-04-26 19:11:12

标签: java spring jdbc spring-jdbc jdbctemplate

每当我实现一个RowMapper时,它总是期望某种域对象可以构造一个对象。这是强制性的吗?我有一个约10,000行的表。最终目标是迭代这些行中的每一行并创建某些列值的HashMap,这些值将一次传递给另一个服务。

我不想在Java内存中创建并返回10,000个无用的对象,只是为了返回并在事后构造哈希映射。我希望动态地构造散列图,并通过函数传递行数据,然后移动到下一行,基本上丢弃前一行的数据。

我的出发点是我有一个jdbcOperations的引用(所以我可以访问查询等方法)。既然我可以访问这个对象,那么在10,000行表中逐个逐一进行的最佳方法是什么,在 EACH 行上,使用ResultSet值构造一个HashMap?

由于

1 个答案:

答案 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;
   }  
});