javaboiii의 Error | Exception

Exception - org.springframework.dao.EmptyResultDataAccessException

javaboiii 2024. 10. 21. 16:47

고도화한 DAO의 JdbcTemplate.queryForObject() 메서드를 사용할 때 EmptyResultDataAccessException이 발생

 

@Repository
public class ImageDAO2 {
	private final String SELECTONE = "SELECT IMAGE_ID, PATH, BOARD_NUM FROM IMAGE WHERE BOARD_NUM=? ORDER BY IMAGE_ID DESC LIMIT 1";
	private final String INSERT = "INSERT INTO IMAGE (PATH,BOARD_NUM) VALUES(?,?)";
	
	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	private List<ImageDTO> selectAll(ImageDTO imageDTO){
		return null;
	}
	
	public ImageDTO selectOne(ImageDTO imageDTO) {
		Object[] args = {imageDTO.getBoard_num()};
		return jdbcTemplate.queryForObject(SELECTONE, args, new FileRowMapper());
	}
}

 

현재 image 테이블은 완전 비어있는 상태임

 

  • 쿼리 실행: SELECT IMAGE_ID, PATH, BOARD_NUM FROM IMAGE WHERE BOARD_NUM=? ORDER BY IMAGE_ID DESC LIMIT 1 
  • 결과 없음: 현재 IMAGE 테이블에 데이터가 없기 때문에 쿼리 결과가 없음
  • 예외 발생: 결과가 없으면 queryForObject()가 EmptyResultDataAccessException 예외 발생
public ImageDTO selectOne(ImageDTO imageDTO) {
    Object[] args = {imageDTO.getBoard_num()};

    ImageDTO image = new ImageDTO(); 
    try {
        image = jdbcTemplate.queryForObject(SELECTONE, args, new FileRowMapper());

    }
    catch (EmptyResultDataAccessException e) {
        // 결과가 없을 때 null 처리
        image = null;
    }
    return image;
}

 

try - catch 로 해결