[Java]JdbcTemplate의 queryForObject()
스프링부트에서 기본으로 제공하는 JdbcTemplate중 queryForObject() 메서드 기본 사용방법을 정리한다.
build.gradle에 아래 내용을 추가한다.
dependencies { //JdbcTemplate 추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' }
queryForObject는 1개의 row를 반환한다. 입력 파라미터에 RowMapper<T>를 넣어줘야 하는데, 아래와 같이 람다식을 이용하면 편리하다.
queryForObject는 데이터가 null이면 EmptyResultDataAccessException이 발생하므로 try… catch문으로 예외를 처리해 주도록 한다.
public Optional<Item> findById(Long id) { String sql = "select id, itme_name, price, quantity from item where id = ?"; Item item = template.queryForObject(sql, itemRowMapper(), id); try { return Optional.of(item); } catch (EmptyResultDataAccessException e) { return Optional.empty(); } }
private RowMapper<Item> itemRowMapper() { return ((rs, rowNum) -> { Item item = new Item(); item.setId(rs.getLong("id")); item.setItemName(rs.getString("item_name")); item.setPrice(rs.getInt("price")); item.setQuantity(rs.getInt("quantity")); return item; }); }
최신 댓글