我目前正在学习 Java Spring 框架,我很难理解为什么以下查询无法从数据库返回任何结果。
我最终试图where
在我的类中创建一个方法OffersDAO
,允许我在特定字段上查询特定值。
public List<Offer> where(String field, String value){
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("field", field);
params.addValue("value", value);
String sql = "select * from offers where :field = :value";
return jdbc.query(sql, params, new RowMapper<Offer>(){
public Offer mapRow(ResultSet rs, int arg1) throws SQLException {
Offer offer = new Offer();
offer.setId(rs.getInt("id"));
offer.setName(rs.getString("name"));
offer.setText(rs.getString("text"));
offer.setEmail(rs.getString("email"));
return offer;
}
});
}
当我明确指定字段时,我能够成功地查询数据库以获取结果,如下所示:
String sql = "select * from offers where name = :value";
显然动态指定字段名有问题。我的猜测很可能是由于field
密钥作为 mysql 字符串(带有''
)插入,而事实上 mysql 需要 :field 占位符的列名。
我的问题如下:
有没有办法使用 jdbc NamedParameterJdbcTemplate 类来完成我在上面尝试做的事情?
如果我不能做到以上,我可以通过什么方式?
谢谢
编辑:不抛出异常。在我尝试提供列名的情况下,将返回一个空结果集。