我在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 *时,事情正常。
答案 0 :(得分:1)
您的查询看起来很糟糕。 试试
String query = "SELECT t.name AS NAME, t.city AS CITY FROM Person t WHERE t.country = :countryName";
假设您的桌子/班级名称是&#39; Person&#39;。 否则,请更换“人物”。好的表名