2012-04-19 6 views
0

getSimpleJdbcTemplate().query(sql, getMapper());リストを返しますが、キーはオブジェクトのフィールドの1つのデータを格納するマップが必要です。例えば、 "Currency"という名前のオブジェクトにはid、code、nameなどのフィールドがあります。上記のコードはListオブジェクトを返しますが、Mapからidで通貨を取得したいとします。今、私は次のコードを書いた:Spring JdbcTemplate.queryを使用しているときにListの代わりにMapを受け取る簡単な方法はありますか?

@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; 
} 

リストオブジェクトを作成せずにループを作成する方法はありますか?

答えて

2

ResultSetから値を抽出する場合はResultSetExtractorです。あなたの場合、Mapオブジェクトを返すカスタムResultSetExtractorを書くことができます。

関連する問題