org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
导致该异常的原因
使用 Druid 连接池进行条件查询,期望返回一条结果,但实际没有任何结果返回,而是中断程序并抛出 EmptyResultDataAccessException
异常。
public UserInfo getInfoByName(String name) {
UserInfo u = null;
String sql = "select * from userinfo where userName=?";
u = template.queryForObject(sql, new BeanPropertyRowMapper<UserInfo>(UserInfo.class), name);
return u;
}
如何处理该异常
由于这里是个sql查询语句,我们明确的知道当字段 userName
的值不等于参数 name
时应该是返回 null
,所以我们在捕获了 EmptyResultDataAccessException
异常后直接返回一个 null
值。
public UserInfo getInfoByName(String name) {
UserInfo u = null;
try {
String sql = "select * from userinfo where userName=?";
u = template.queryForObject(sql, new BeanPropertyRowMapper<UserInfo>(UserInfo.class), name);
} catch (EmptyResultDataAccessException e){
return null;
}
return u;
}