Mysql 如果jdbc.queryForObject没有';我一行也不回
我想知道如何在我的案例中正确使用jdbc 在mysql中,Mysql 如果jdbc.queryForObject没有';我一行也不回,mysql,sql,jdbc,spring-jdbc,jdbctemplate,Mysql,Sql,Jdbc,Spring Jdbc,Jdbctemplate,我想知道如何在我的案例中正确使用jdbc 在mysql中,saveLinkHistory列是一个位(1)类型 public boolean getIsSavedLinkHistory(String name) { String sql = "select saveLinkHistory from users where name = ?"; Boolean isTracked = jdbcTemplateObject.queryForObject(sql, new
saveLinkHistory
列是一个位(1)类型
public boolean getIsSavedLinkHistory(String name) {
String sql = "select saveLinkHistory from users where name = ?";
Boolean isTracked = jdbcTemplateObject.queryForObject(sql, new Object[] { name }, Boolean.class);
return isTracked;
}
查询一直运行良好,直到我得到一个错误结果大小不正确:预期为1,实际为0
,因为有时名称
不存在,queryForObject
方法希望我总是得到1行作为结果
我如何处理这种情况,只要抛出一个表示“name”不存在的异常?
顺便问一下,
Boolean
在这里可以吗?因为我以前没有看到过这样的代码。JdbcTemplate的queryForObject方法希望您的查询始终返回一行,否则它将抛出EmptyResultDataAccessException。
您可以简单地将查询方法与ResultSetTextRactor一起使用,而不是使用queryForObject。ResultSetTextRactor-extractData(ResultSet rs)方法将返回任意结果对象,如果没有返回数据,则返回null。如果返回null,则可以抛出相关异常
return jdbc.query(sql, new ResultSetExtractor<Boolean>() {
@Override
public Boolean extractData(ResultSet rs) throws SQLException,
DataAccessException {
return rs.next() ? rs.getBoolean("column_name") : null;
}
});
返回jdbc.query(sql,newresultsetextractor(){
@凌驾
公共布尔提取数据(ResultSet rs)引发SQLException,
DataAccessException{
返回rs.next()?rs.getBoolean(“列名称”):null;
}
});
试试这个:
return DataAccessUtils.singleResult(jdbcTemplate.query(sql, new SingleColumnRowMapper<Boolean>(), param1, param2));
返回DataAccessUtils.singleResult(jdbcTemplate.query(sql,new SingleColumnRowMapper(),param1,param2));