Spring管理JDBCTemplate之EmptyResultDataAccessException异常)
在使用Spring管理JDBC时,一般使用JdbcDaoSupport类下的JdbcTemplate模板。该模板提供了几个方法:
用于增删改:
update(String sql,Object args)
用于查询:
- 查询单列单个数据:
queryForObject(String sql,XXX.class)
- 查询多列多个数据:
queryForMap(String sql)
- 查询单行数据:
queryForObject(String sql,Object[] args,RowMapper<T> rowMapper)
- 查询多行数据:
query(String sql,Object[] args,RowMapper<T> rowMapper)
当该JDBC管理模板根据sql语句在数据库中查找不到数据时,会抛出EmptyResultDataAccessException异常,而不是返回null。这是为了避免程序员不对空值进行处理。
此时如果想返回null可以使用try-catch对该异常进行处理:
public T mySqlMethod() {
try{
return this.getJdbcTemplate().queryForObject(sql, new RowMapper<T>() {
@Override
public Courier mapRow(ResultSet resultSet, int i) throws SQLException {
return "OK";
}
});
}catch (EmptyResultDataAccessException e){
return null;
}
}