SPRING

[SimpleJdbcInsert]

nang. 2019. 5. 13. 21:44
반응형
SMALL

* 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;

     }

}

 

 

 

 

 

 

 

 

반응형
LIST