使用NamedParameterJDBCTemplate选择几列

时间:2016-11-01 15:28:24

标签: java spring spring-jdbc

我在Spring中使用NamedParameterJDBCTemplate并尝试仅选择几列而不是所有列。但我面临一个错误 - org.SpringFramework.BadSqlGrammarException。

我的DAO类具有以下代码。

@Autowired
private NamedParameterJdbcTemplate npjt;

... // Some other code

String query = "SELECT t.name AS NAME, t.city AS CITY FROM t WHERE t.country = :countryName";
MapSqlParameterSource param = new MapSqlParameterSource();
param.addValue("countryName", "GERMANY");
List<Person> pl = npjt.query(sql,param, new PersonMapper()); // Throws org.SpringFramework.BadSqlGrammarException 

Person Model Class如下。

public class Person {
String name;
String city;
String country;
String address;

// All getters & setters
}

Mapper类如下。

public class PersonMapper implements RowMapper {

public Person mapRow(ResultSet rs, int rowNum) throws SQLException {
    Person p = new Person();
    p.setName(rs.getString("NAME"));
    p.setCity(rs.getString("CITY"));
    return p;
  }

}

仅在选择几列时才面对错误。当做一个select *时,事情正常。

1 个答案:

答案 0 :(得分:1)

您的查询看起来很糟糕。 试试

String query = "SELECT t.name AS NAME, t.city AS CITY FROM Person t WHERE t.country =        :countryName";

假设您的桌子/班级名称是&#39; Person&#39;。 否则,请更换“人物”。好的表名