【发布时间】:2015-09-08 08:37:54
【问题描述】:
我正在使用 mysql 和 spring 4.1.6,但在将空变量发送到数据库时遇到问题。我知道要发送一个空值,使用语法 IS NULL 但发送到数据库的字段是可选的(整个对象中唯一的可选值),因此它可能为空或可能有一个值。
我对数据库的请求,即简单地检查地址是否存在,由 CRUD 方法调用:
注意:有问题的变量是 street2
public boolean doesExist(Address address){
String sql = "SELECT EXISTS(SELECT * FROM Address WHERE contactType=? AND street1=? AND street2 ? AND city=? AND state=? AND zip=? AND country=?);";
String s = isNullDBQuery(address.getStreet2());
jdbcTemplate = new JdbcTemplate(dataSource);
int exist = jdbcTemplate.queryForObject(sql, new Object[] {address.getContactType().name(), address.getStreet1(), isNullDBQuery(address.getStreet2()), address.getCity(), address.getState().name(), address.getZip(), address.getCountry().name()}, Integer.class);
if(exist == 1){
return true;
} else {
return false;
}
}
我的 isNullDBQuery:
private String isNullDBQuery(String s){
if(s == null){
return "IS NULL";
} else {
return "=" + s;
}
}
返回的错误是带有“IS NULL”的语法错误。发送到数据库的查询是street2 'IS NULL',而不是street2 IS NULL。是否可以去掉我请求中的单引号?还是有更好的方法来做到这一点?
感谢任何帮助
【问题讨论】:
标签: mysql spring jdbctemplate