日期:2014-05-16  浏览次数:20416 次

spring JdbcTemplate的queryForObject为空返回异常情况的一个处理

看spring的queryForObject(如果查询结果条数为0或者大于1)都会返回异常,我们希望没查到返回null,这样我们就可以给用户提示没有找到,要不我们的每个queryforObject,queryForInt...等等方法都需要手动拦截这个异常来判断为空,才能做出判断。
先看下spring的这段源码:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->public?<T>?T?queryForObject(String?sql,?Object[]?args,?RowMapper<T>?rowMapper)?throws?DataAccessException?{
??List
<T>?results?=?query(sql,?args,?new?RowMapperResultSetExtractor<T>(rowMapper,?1));
??
return?DataAccessUtils.requiredSingleResult(results);
}

public?static?<T>?T?requiredSingleResult(Collection<T>?results)?throws?IncorrectResultSizeDataAccessException?{
??
int?size?=?(results?!=?null???results.size()?:?0);
??
if?(size?==?0)?