2013-05-15 11 views
0
public List<ColorModel> getAllColor() { 
    String query = "SELECT * FROM COLOR"; 
    List<ColorModel> colors = getjdbcTemplate().query(query, new ColorMapper()); 
    return colors; 
} 

class ColorMapper implements RowMapper<Color> { 
    public ColorModel mapRow(ResultSet rs, int rowNum) throws SQLException { 
    ColorModel color = new ColorModel(); 
    color.setId(rs.getInt("ID")); 
    color.setName(rs.getString("color_name")); 
    } 
} 

問題如何把結果從數據庫中LinkedHashMap中

我怎麼能而返回LinkedHashMap<Integer, String>而不是List<ColorModel>

回答

3

嗯,你可以很容易地只是你已經取出後執行映射結果列表如下:

... 
List<Color> colors = getjdbcTemplate().query(query, new ColorMapper()); 
Map<Integer, String> colorMap = new LinkedHashMap<Integer, String>(); 
for (Color color : colors) { 
    colorMap.put(color.getId(), color.getName()); 
} 
return colorMap; 

或者,您可以提供RowCallbackHandler

final Map<Integer, String> colorMap = new LinkedHashMap<Integer, String>(); 
getJdbcTemplate().query(query, new RowCallbackHandler() { 
    @Override 
    public void processRow(ResultSet rs) { 
     colorMap.put(rs.getInt("ID"), rs.getString("color_name")); 
    } 
}); 

請注意,您不能在Java中創建Map<int, String>,作爲泛型類型參數不能是基本類型。

+0

對不起,這是一個錯字。它被認爲是「顏色」。我試圖避免迭代列表再次創建HashMap,而是在獲取查詢時執行此操作。 – Anthony

+0

@Anthony:查看我的編輯。 –

+0

謝謝你的作品。我只是用sqlexception包裝它 – Anthony

0
public List<ColorModel> getAllColor() { 
Map<Integer,String> map = LinkedHashMap<Integer, String>();  
    String query = "SELECT * FROM COLOR"; 
    List<Color> colors = getjdbcTemplate().query(query, new ColorMapper()); 
    for (Color color : colors) { 
    colorMap.put(color.getId(), color.getName()); 
} 
return map; 
} 
+0

爲什麼你想要使地圖變成一個實例?它看起來應該在我的方法中聲明它。 –

+0

感謝您的建議 – PSR

相關問題