반응형
<< SELECT KEY 셀렉트키 MYBATIS MAX+1 >>
JAVA, SPRING 기반의 MYBATIS 에 흔히 사용되는 SELECT KEY 구문이다.
아래를 참고하여 사용 할 수 있다.
1. SQL
<insert id="insertBoard" useGeneratedKeys="true"> <selectKey keyProperty="no" resultType="String" order="BEFORE"> SELECT NVL( MAX( TO_NUMBER( TRIM(NO) ) ), 0 ) + 1 FROM /*테이블명 A*/ </selectKey> INSERT INTO /*테이블명 A*/ ( NO, NAME, ) VALUES ( #{no}, /* 해당 필드는 위에서 셀렉트 해온 no가 들어감. */ #{name} ) </insert> |
2. Insert, Update 와 Delete 엘리먼트 속성
useGeneratedKeys | (입력(insert, update)에만 적용) 데이터베이스에서 내부적으로 생성한 키 (예를들어 MySQL또는 SQL Server와 같은 RDBMS의 자동 증가 필드)를 받는 JDBC getGeneratedKeys메소드를 사용하도록 설정하다. 디폴트는 false 이다. |
keyProperty | (입력(insert, update)에만 적용) getGeneratedKeys 메소드나 insert 구문의 selectKey 하위 엘리먼트에 의해 리턴된 키를 셋팅할 프로퍼티를 지정. 디폴트는 셋팅하지 않는 것이다. 여러개의 칼럼을 사용한다면 프로퍼티명에 콤마를 구분자로 나열할수 있다. |
3. selectKey 엘리먼트 속성
keyProperty | selectKey구문의 결과가 셋팅될 대상 프로퍼티. |
keyColumn | 리턴되는 결과셋의 칼럼명은 프로퍼티에 일치한다. 여러개의 칼럼을 사용한다면 칼럼명의 목록은 콤마를 사용해서 구분한다. |
resultType | 결과의 타입. 마이바티스는 이 기능을 제거할 수 있지만 추가하는게 문제가 되지는 않을것이다. 마이바티스는 String을 포함하여 키로 사용될 수 있는 간단한 타입을 허용한다. |
order | BEFORE 또는 AFTER를 셋팅할 수 있다. BEFORE로 설정하면 키를 먼저 조회하고 그 값을 keyProperty 에 셋팅한 뒤 insert 구문을 실행한다. AFTER로 설정하면 insert 구문을 실행한 뒤 selectKey 구문을 실행한다. 오라클과 같은 데이터베이스에서는 insert구문 내부에서 일관된 호출형태로 처리한다. |
statementType | 위 내용과 같다. 마이바티스는 Statement, PreparedStatement 그리고 CallableStatement을 매핑하기 위해 STATEMENT, PREPARED 그리고 CALLABLE 구문타입을 지원한다. |
반응형
'웹프로그래밍 > Oracle or Sql' 카테고리의 다른 글
[SQL] ROW_NUMBER 기준 넘버링 (0) | 2021.05.26 |
---|---|
SQL QUERY 개행문자 및 스크립트 제거 (1) | 2020.10.30 |
시퀀스, 순번(MAX+1)을 함수로 사용하는 방법 (0) | 2020.10.27 |
SQL ORACLE, TIBERO DB TIMESTAMP를 이용한 복구(실수로 DELETE) (0) | 2020.04.14 |
Oracle(오라클) 계정 모를때 (0) | 2019.05.30 |