
SimpleJdbcInsert
- JdbcTemplate은 INSERT SQL를 직접 작성하지 않아도 되도록
SimpleJdbcInsert 라는 편리한 기능을 제공한다.
의존성 주입
private final SimpleJdbcInsert jdbcInsert;
public JdbcTemplateItemRepositoryV3(DataSource dataSource) {
this.jdbcInsert = new SimpleJdbcInsert(dataSource)
.withTableName("item")
.usingGeneratedKeyColumns("id");
}
withTableName : 데이터를 저장할 테이블 명을 지정한다.
usingGeneratedKeyColumns : key 를 생성하는 PK 컬럼 명을 지정한다.
usingColumns : INSERT SQL에 사용할 컬럼을 지정한다. 특정 값만 저장하고 싶을 때 사용한다. 생략할 수 있다.
SimpleJdbcInsert 는 생성 시점에 데이터베이스 테이블의 메타 데이터를 조회한다. 따라서 어떤 컬럼이 있는지 확 인 할 수 있으므로 usingColumns 을 생략할 수 있다. 만약 특정 컬럼만 지정해서 저장하고 싶다면 usingColumns 를 사용하면 된다.
데이터 변경 - PK 자동 생성
BeanPropertySqlParameterSource param = new BeanPropertySqlParameterSource(item);
Number key = jdbcInsert.executeAndReturnKey(param);
item.setId(key.longValue());
return item;