2013-02-16 29 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