如果查询返回多行,我可以使用 queryForMap
吗?
对于单行,以下代码可以正常工作。
public Map<String, Object> retrieveMultipleRowsColumns(String deptName){
return jdbcTemplate.queryForMap("SELECT DEPT_ID,DEPT_NAME FROM DEPT WHERE DEPT_NAME = ?", deptName);
}
如何修改多行?
最佳答案
我知道这已经很老了,但是如果您正在寻找 map ,有一种更简单的方法可以做到这一点。
只需实现 ResultSetExtractor 接口(interface)即可定义要返回的类型。下面是一个如何使用它的例子。您将手动映射它,但对于简单的 map ,它应该很简单。
jdbcTemplate.query("select string1,string2 from table where x=1", new ResultSetExtractor<Map>(){
@Override
public Map extractData(ResultSet rs) throws SQLException,DataAccessException {
HashMap<String,String> mapRet= new HashMap<String,String>();
while(rs.next()){
mapRet.put(rs.getString("string1"),rs.getString("string2"));
}
return mapRet;
}
});
这将为您提供具有多行(无论您的查询返回多少)的 Map 返回类型,而不是 Map 列表。您可以在此处查看 ResultSetExtractor 文档:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jdbc/core/ResultSetExtractor.html
关于java - 用于检索多行的 JDBCTemplate queryForMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24221187/