Java 如何使用JDBCOperations一次查询一行数据库表并返回void,同时基于值构造hashmap?

Java 如何使用JDBCOperations一次查询一行数据库表并返回void,同时基于值构造hashmap?,java,spring,jdbc,spring-jdbc,jdbctemplate,Java,Spring,Jdbc,Spring Jdbc,Jdbctemplate,每当我实现一个行映射器时,它总是期望某种域对象,它可以用它来构造一个对象。这是强制性的吗?我有一张大约10000行的桌子。最终目标是迭代这些行中的每一行,并创建特定列值的HashMap,这些列值将一次传递给另一个服务 我不想在Java内存中创建并返回10000个无用的对象,而只是在事后返回并构建hashmap。我想用通过函数传递的行数据动态构建hashmaps,然后移动到下一行,基本上丢弃上一行的数据。 我的出发点是,我有一个对jdbcOperations的引用(因此我可以访问诸如query之类

每当我实现一个行映射器时,它总是期望某种域对象,它可以用它来构造一个对象。这是强制性的吗?我有一张大约10000行的桌子。最终目标是迭代这些行中的每一行,并创建特定列值的HashMap,这些列值将一次传递给另一个服务

我不想在Java内存中创建并返回10000个无用的对象,而只是在事后返回并构建hashmap。我想用通过函数传递的行数据动态构建hashmaps,然后移动到下一行,基本上丢弃上一行的数据。

我的出发点是,我有一个对jdbcOperations的引用(因此我可以访问诸如query之类的方法)。现在我已经可以访问这个对象了,那么在10000行的表中一个接一个地运行,并在每一行上使用ResultSet值构造一个HashMap的最佳方法是什么


谢谢

这听起来像是您想要的,而不是设计用于将每一行映射到一个对象的
行映射器
,您需要一个返回单个对象的
ResultSetExtractor

如果看不到您的代码,就很难做到具体,但类似于以下内容(未经测试):

Map finalMap=jdbccomperations.query(sql、args、newresultsetextractor(){
映射提取数据(ResultSet rs)抛出SQLException、DataAccessException{
Map Map=newhashmap();
while(rs.next()){
//把东西放到地图上
}
返回图;
}  
});

我只想逐行迭代数据库表中的每一行,从每一行的resultset数据中构造一个hashmap。您是说要为每一行构造一个hashmap,然后用该数据调用另一个对象吗?实际上,您不需要从您的操作中返回任何东西?是的。我在另一个线程上找到了答案。解决方案是不使用RowMapper,而是使用RowCallbackHandler。
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;
   }  
});