* insert 수행
: SQL query를 직접 작성하지 않고 데이터 삽입을 할 수 있음
: 쿼리문 안쓰고 코드로 하는 것
* methods
- .withTableName(String tableName) : 데이터를 삽입할 테이블 명 지정 = insert into TABLE
- .usingColumns(String... columnNames) : 데이터를 삽입할 column list 지정 = (column1, column2...)
- .usingGeneratedKeyCoumns(String... coulmnNames) : 값이 자동 생성될 key column list 지정 = auto_increment
- int execute : 주어진 파라미터 값들을 삽입 실행
- Number executeAndReturnKey : 데이터 삽입 후 자동 생성된 key 값 return
< 예제 1 insert >
public class SimpleJdbcCategoryDao implements CategoryDao {
private SimpleJdbcInsert jdbcInsert;
public SimpleJdbcCategoryDao(DataSource dataSource) { // 생성자에다가 셋팅
jdbcInsert = new SimpleJdbcInsert(dataSource);
jdbcInsert.withTableNane("CATEGORY"); // 데이터 삽입할 테이블 지정이니까 CATEGORY 테이블에
jdbcInsert.usingColumns("CATID", "NAME", "DESCN"); // 삽입할 컬럼들이니까 이 컬럼들을 insert.
// 만약에 모든 컬럼에 삽입이면 이 코드 생략 가능
---> "insert into CATEGORY (CATID, NAME, DESCN) values (?, ?, ?)" 와 동일
}
* 작동 : 사용자가 웹에서 입력 > 입력한 값이 DTO(Category)에 저장 > DTO에 저장된 값을 DAO에서 가져와서 Map에 넣음 > Map의 값을 insert
public void insertNewCategory(Cateogory category) {
Map paramMap = new HashMap();
paramMap.put("catId", category.getCategoryId());
paramMap.put("name", category.getName());
paramMap.put("descn", category.getDescription());
jdbcInsert.execute(paramMap); // insert 시작해라~
}
}
< 예제 2 Key >
public class SimpleJdbcGuestMessageDao implements GuestMessageDao {
private SimpleJdbcInsert insertMessage;
public SimpleJdbcGuestMessageDao(DataSource dataSource) { // 생성자에다가 셋팅
insertMessage = new SimpleJdbcInsert(dataSource);
insertMessage.withTableNane("GUESTBOOK_MESSAGE");
insertMessage.usingGeneratedKeyColumns("MESSAGE_ID"); // 자동 생성 값이니까 auto_increment 한 것
insertMessage.usingColumns("GUEST_NAME", "MESSAGE", "REGISTRY_DATE");
}
public int insert(GuestMessage message) {
BeanPropertySqlParameterSource paramSoure = new BeanPropertySqlParameterSource(message);
Number keyValue = insertMessage.executeAndReturnKey(paramSource); // 삽입 후 자동 생성된 key값 리턴
message.setId(keyValue.intValue());
return 1;
}
}
'SPRING' 카테고리의 다른 글
[Mybatis] Dao 구현 방법 1 (mapper.xml / DAO class) (0) | 2019.06.03 |
---|---|
DAO Support Class (0) | 2019.05.13 |
[NamedParameterJdbcTemplate] (0) | 2019.05.13 |
[JdbcTemplate] 그 외 메소드 / 가변 길이 인자 지원 (0) | 2019.05.13 |
[JdbcTemplate] List<T> query 메소드들 (0) | 2019.05.13 |