[TIL-DAY24] JdbcTemplate [query(), queryForObject()]

김유란·2025년 1월 31일

1. jdbcTemplate.query()

  • 여러 개의 결과를 처리할 때 사용됨
  • 결과가 여러 행일 때 유용
  • 반환값이 List
List<Long> authorIds = jdbcTemplate.query("SELECT id FROM author WHERE email = ?", new Object[]{email}, new RowMapper<Long>() {
    @Override
    public Long mapRow(ResultSet rs, int rowNum) throws SQLException {
        return rs.getLong("id");
    }
});

2. jdbcTemplate.queryForObject()

  • 단일 값을 반환할 때 사용됨
  • 결과가 한 행일 때 유용
  • 결과가 없거나 두 개 이상의 결과가 있으면 예외를 던짐
Long authorId = jdbcTemplate.queryForObject("SELECT id FROM author WHERE email = ?", new Object[]{email}, Long.class);


비교 정리

query()queryForObject()
사용 목적여러 행(Row) 조회단일 값 조회
반환 타입List<T>T (단일 값)
RowMapper 필요 여부필요 (RowMapper<T>)기본 타입이면 필요 없음
결과 없음빈 리스트([]) 반환EmptyResultDataAccessException 발생
결과가 2개 이상모든 결과 반환IncorrectResultSizeDataAccessException 발생

0개의 댓글