我正在使用 spring 的 JdbcDaoSupport 进行数据库调用。我想执行本机查询(sql 查询)来检索数据。JdbcTemplate 中是否有任何 API 可用于本机查询?我使用了 queryForObject,但如果没有数据,它会抛出异常,而我希望它在找不到数据时返回 null。
问问题
6134 次
2 回答
3
有许多选项可用于使用JdbcTemplate
. 链接的文档包含大量采用本机 sql 的方法,通常还有某种回调处理程序,它将完全满足您的要求。一个简单的想到的是query(String sql, RowCallbackHandler callback)
。
jdbcTemplate.query("select * from mytable where something > 3", new RowCallbackHandler() {
public void processRow(ResultSet rs) {
//this will be called for each row. DO NOT call next() on the ResultSet from in here...
}
});
于 2012-08-01T00:37:32.510 回答
1
Spring JdbcTemplate 的 queryForObject 方法期望您的 SQL 准确返回一行。如果没有返回行或返回的行超过 1 行,则会抛出 org.springframework.dao.IncorrectResultSizeDataAccessException。您必须使用 try catch 块包装对 queryForObject 的调用以处理 IncorrectResultSizeDataAccessException 并在引发异常时返回 null
例如
try{
return jdbcTemplate.queryForObject(...);
}catch(IncorrectResultSizeDataAccessException e){
return null;
}
于 2012-08-01T05:35:44.680 回答