浏览 9707 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-09
public Object queryForObject(String sql, Object[] args, RowMapper rowMapper) throws DataAccessException { List results = (List) query(sql, args, new RowMapperResultSetExtractor(rowMapper, 1)); return DataAccessUtils.requiredSingleResult(results); } public static Object requiredSingleResult(Collection results) throws IncorrectResultSizeDataAccessException { int size = (results != null ? results.size() : 0); if (size == 0) { throw new EmptyResultDataAccessException(1); } if (results.size() > 1) { throw new IncorrectResultSizeDataAccessException(1, size); } return results.iterator().next(); } 取不到数据就报EmptyResultDataAccessException而不是返回null, 这不是和spring ibatis,hibernate里同样方法的实现不一致了么? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-10
我猜测是为了妥协spring2.0里新加入的simpleJdbcTemplate这个方法
@SuppressWarnings("unchecked") public <T> T queryForObject(String sql, ParameterizedRowMapper<T> rm, Object... args) throws DataAccessException { return (T) (ObjectUtils.isEmpty(args) ? getJdbcOperations().queryForObject(sql, rm): getJdbcOperations().queryForObject(sql, args, rm)); } 如果是Null,转成范型时候会抛出NPE错误, 这应该算一个bug, 因为简单的改一下就可以了: Object obj = (ObjectUtils.isEmpty(args) ? getJdbcOperations().queryForObject(sql, rm) : getJdbcOperations().queryForObject(sql, args, rm)); return obj == null ? null : (T) obj; |
|
返回顶楼 | |
发表时间:2007-05-10
1.2.5中就有了,应该不是为了妥协这个,我觉得是人家故意加了这个约束。
|
|
返回顶楼 | |