반응형
Spring + JDBC를 이용하여 개발 시에 queryForObject(...) 메소드를 사용하여 하나의 객체만 가져올 경우 해당 데이터가 없으면 org.springframework.dao.EmptyResultDataAccessException 예외가 발생하게 된다. 1
아래 소스를 보면 findById(Integer id) 메소드에서 PK로 하나의 데이터를 셀렉트 하게 되어 있다. 만약 데이터가 없으면 null이나 빈 VO를 리턴해주겠거니 하겠지만 예외를 발생하게 된다.이럴 때에는 예외 처리를 해주면 된다. 2
package kr.nerv.dao.impl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport;
import kr.nerv.dao.UserInfoDao;
import kr.nerv.vo.UserInfoVo;
public class UserInfoDaoJdbc extends NamedParameterJdbcDaoSupport implements UserInfoDao {
// row mapper
private UserInfoRowMapper rowMapper = new UserInfoRowMapper();
// find by id query
private String findById = "select * from sample_user_info where id = :id";
@Override
public UserInfoVo findById(Integer id) throws Exception {
Map param = new HashMap();
param.put("id", id);
// select 데이터가 없으면 EmptyResultDataAccessException 예외 발생!!
return (UserInfoVo) getNamedParameterJdbcTemplate().queryForObject(findById, param,
rowMapper);
}
private class UserInfoRowMapper implements RowMapper {
@Override
public UserInfoVo mapRow(ResultSet rs, int rowNum) throws SQLException {
UserInfoVo userInfo = new UserInfoVo();
userInfo.setId(rs.getInt("id"));
userInfo.setName(rs.getString("name"));
userInfo.setTel(rs.getString("tel"));
return userInfo;
}
}
}
아래 소스를 보면 findById(Integer id) 메소드에서 PK로 하나의 데이터를 셀렉트 하게 되어 있다. 만약 데이터가 없으면 null이나 빈 VO를 리턴해주겠거니 하겠지만 예외를 발생하게 된다.이럴 때에는 예외 처리를 해주면 된다. 2
@Override
public UserInfoVo findById(Integer id) throws Exception {
Map param = new HashMap();
param.put("id", id);
try {
return (UserInfoVo) getNamedParameterJdbcTemplate().queryForObject(findById, param,
rowMapper);
} catch (EmptyResultDataAccessException e) {
// EmptyResultDataAccessException 예외 발생시 null 리턴
return null;
}
}
반응형
'Java+ > Trouble Shooting' 카테고리의 다른 글
[Kotlin + Spring] Maven configuration (1) | 2019.05.26 |
---|---|
JSP EL(Expression Language) 사용이 안될 때... (0) | 2015.04.20 |
com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (0) | 2014.01.15 |
No tag library could be found with this URI (0) | 2013.03.08 |