使用Spring JdbcTemplate.query时,是否有简单的方法来接收Map而不是List?

时间:2012-04-19 06:51:51

标签: spring jdbctemplate spring-jdbc

getSimpleJdbcTemplate().query(sql, getMapper());返回List,但是我需要一个Map,其中key将是对象字段之一的存储数据。例如,我有一个名为“Currency”的对象,其中包含字段:id,code,name等。上面的代码将返回List对象,但我想从Map获取id的货币。现在,我写了以下代码:

@Override
public Map<Integer, Currency> listCurrencies() {
    String sql = "select cur_id, cur_code, cur_name ... from currencies";

    List<Currency> currencies = getSimpleJdbcTemplate().query(sql, getMapper());
    Map<Integer, Currency> map = new HashMap<Integer, Currency>(currencies.size());

    for (Currency currency : currencies) {
        map.put(currency.getId(), currency);
    }

    return map;
}

有没有办法做同样但没有创建List对象并在其中循环?

1 个答案:

答案 0 :(得分:2)

您有ResultSetExtractorResultSet中提取值。因此,在您的情况下,您可以编写一个自定义的ResultSetExtractor,它将返回Map对象。