[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;
        });
    }

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다