Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果jdbc.queryForObject没有';我一行也不回_Mysql_Sql_Jdbc_Spring Jdbc_Jdbctemplate - Fatal编程技术网

Mysql 如果jdbc.queryForObject没有';我一行也不回

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

我想知道如何在我的案例中正确使用jdbc

在mysql中,
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));