JDBC模板查询用于检索多行的地图

2022-09-02 23:16:17

如果查询返回了多行,我可以使用。queryForMap

对于单行,下面的代码工作正常。

public Map<String, Object> retrieveMultipleRowsColumns(String deptName){
    return jdbcTemplate.queryForMap("SELECT DEPT_ID,DEPT_NAME FROM DEPT WHERE DEPT_NAME = ?", deptName);
}

如何为多行修改此内容?


答案 1

我知道这已经很老了,但是如果你正在寻找地图,有一种更简单的方法可以做到这一点。

只需实现 ResultSetExtractor 接口即可定义要返回的类型。下面是如何使用它的示例。您将手动映射它,但对于简单的地图,它应该很简单。

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


答案 2

有关完整的详细信息,请参阅 javadoc。它返回queryForListList<Map<String,Object>>

public List<Map<String, Object>> retrieveMultipleRowsColumns(String deptName){
    return jdbcTemplate.queryForList("SELECT DEPT_ID,DEPT_NAME FROM DEPT WHERE DEPT_NAME = ?", deptName);
}

推荐