Ole*_*leg 2 mysql sql jdbc spring-jdbc jdbctemplate
我想知道如何在我的情况下正确使用 jdbc。
该saveLinkHistory列是 mysql 中的 bit(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;
}
Run Code Online (Sandbox Code Playgroud)
查询运行良好,直到出现错误,Incorrect result size: expected 1, actual 0因为有时name不存在,该queryForObject方法期望我总是得到 1 行作为结果。
我该如何处理这种情况,只是抛出一个异常,说“名称”不存在?顺便说一句,Boolean这里可以吗?因为我之前没有看到这样的代码。
小智 7
JdbcTemplate 的 queryForObject 方法期望您的查询应始终返回一行,否则它将抛出 EmptyResultDataAccessException。您可以简单地使用 ResultSetExtractor 的查询方法而不是 queryForObject。ResultSetExtractor - 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;
}
});
Run Code Online (Sandbox Code Playgroud)
尝试这个:
return DataAccessUtils.singleResult(jdbcTemplate.query(sql, new SingleColumnRowMapper<Boolean>(), param1, param2));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9471 次 |
| 最近记录: |