2013-02-16 37 views
2

我想從我的simplejdbctemplate查詢表中獲取所有行,並希望將它們添加到列表中。什麼是最好的方式來做到這一點? 我已經試過這樣:如何從simplejdbctemplate查詢獲取字符串列表或輸入T?

List<String> carbrands = (List<String>) jdbcTemplate.queryForList("select brand from cars", String.class); 

所以我希望像字符串列表:

toyota 
hyundai 
bmw 
benz 
... 

但我不能得到這個工作。如果我嘗試對多種類型進行此操作,我會卡住:

List<Car> values = (List<Car>) jdbcTemplate.queryForList("select name,brand,value from cars", Car.class); 

這也行不通。我希望它能夠返回Cars,我將其定義爲名稱,品牌,價值。但是......我一直在搜索,找不到解決方案。有什麼建議麼?

回答

3

1)查詢1是正確的,應該工作。

2)查詢2應該是

List<Car> list = jdbcTemplate.query("select name,brand,value from cars", new BeanPropertyRowMapper<Car>(Car.class)); 

車應該是一個有效的JavaBean - 必須有一個公共的無參數的構造函數和公衆制定者/吸氣

public class Car { 
    String name; 

    public void setName(String name) { 
      this.name = name; 
    } 

    public String getName() { 
      return name; 
    } 
    ... 
} 

alternatevely您可以閱讀轎車爲列的地圖

List<Map<String, Object>> cars = jdbcTemplate.queryForList("select * from cars"); 
for(Map car : cars) { 
    String brand = (String)car.get("brand"); 
    String name = (String)car.getName("name"); 
    .... 
} 
+0

Urgh ...我有我的汽車類的名稱,品牌,價值的爭論。如果我現在拿出來,那麼在這個時候會搞得太多東西,所以我寧願不要,如果我能避免它。有沒有其他解決方法?另外,我的maven說我對查詢1有不變的類型。 – Joe 2013-02-16 04:32:46

+0

List > cars = t.queryForList(「select name,...」);會給你一張地圖清單,1張地圖(columnName/value)是1輛車 – 2013-02-16 04:41:02

+0

我不知道我明白你的意思 - t.queryList?你只是使用t作爲jdbcTemplate的縮寫嗎?此外,我沒有看到任何queryforlist作爲arg查詢...我應該在查詢後放什麼?謝謝! (對不起,我從來沒有真正能夠理解simplejdbctemplate) – Joe 2013-02-16 04:45:05

相關問題