博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
阅读量:4983 次
发布时间:2019-06-12

本文共 1222 字,大约阅读时间需要 4 分钟。

Spring中使用JdbcTemplate的queryForObject方法,当查不到数据时会抛出如下异常:

org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0org.springframework.dao.support.DataAccessUtils.(DataAccessUtils.java:71)org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:729)使用Debug进行调试时,发现是在DataAccessUtils的requiredSingleResult()方法中抛出的异常。源码如下:
[java] 
 
 
  1. public static <T> T requiredSingleResult(Collection<T> results) throws IncorrectResultSizeDataAccessException {  
  2.         int size = (results != null ? results.size() : 0);  
  3.         if (size == 0) {  
  4.             throw new EmptyResultDataAccessException(1);  
  5.         }  
  6.         if (results.size() > 1) {  
  7.             throw new IncorrectResultSizeDataAccessException(1, size);  
  8.         }  
  9.         return results.iterator().next();  
  10.     }  

可以看出,当results为空时,就会抛出EmptyResultDataAccessException异常,Spring这样做的目的是为了防止程序员不对空值进行判断,保证了程序的健壮性。另外,当results的size大于1时,还会

当results的size大于1时,还会抛出IncorrectResultSizeDataAccessException异常,以保证返回的记录只有一条。如果我们想查询结果为空时,返回null而不是抛出异常,该怎么办呢?很简单,只需要在捕获EmptyResultDataAccessException,然后返回null,代码如下:
[java] 
 
 
  1. Object object = null;  
  2. try {  
  3.     object = jdbcTemplate.queryForObject();  
  4. catch (EmptyResultDataAccessException e) {  
  5.     return null;  
  6. }  
  7. return object;  

转载于:https://www.cnblogs.com/guagua-join-1/p/8900266.html

你可能感兴趣的文章
寒假作业03
查看>>
P1129 [ZJOI2007]矩阵游戏
查看>>
hdu2046 骨牌铺方格
查看>>
同心圆闪烁扩散功能
查看>>
自定义连接池
查看>>
应用程序不能全然结束的原因探秘及调试方法
查看>>
单元文件结构
查看>>
DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式
查看>>
Qt学习(14)
查看>>
NOIP2011T2 统计单词数
查看>>
每日5min分享-接口测试框架
查看>>
超好用超短的小程序请求封装
查看>>
PHP 解析Url 面向对象
查看>>
nodejs express route 的用法
查看>>
Python多线程
查看>>
java IO整理-File
查看>>
粗谈Springboot框架,众所周知Springboot是有spring推出的微服务框架,什么是微服务框架呢!...
查看>>
离钱越近,才能赚钱越‘稳’
查看>>
mapping.mapper.xml文件中的标签详解
查看>>
软件工程——理论、方法与实践⑦
查看>>