리주의 프로그래밍 공부

[MyBatis] Auto_Increment된 값 가져오기 본문

DB 공부

[MyBatis] Auto_Increment된 값 가져오기

Leezu_ 2021. 4. 3. 14:57

 

 

해시태그 기능을 구현하면서 다음과 같이 DB를 설계했다.

문제는 writing과 tag를 insert하고나서 이 관계를 위한 writingtag를 insert할때 생겼다.

 

바로 writing의 no의 값을 가져오는 일이었다.

(no : auto_increment)

tagId는 입력받은 tag의 name을 가지고 가져올 수 있으나, writing의 경우에는 no를 가져올 방법이 없었기 때문이다.

 

 

 

 

 

이럴 때 사용하는게 Mybatis의 SelectKey 기능이다.

 

keyProperty : 어느 변수에 반환할지

resultType : 자료형

order : after은 insert 실행 후 처리

         before은 insert 실행 전 처리

 

 

 

그 결과 insert구문이 끝나면, selectKey가 작동되어, auto_increment된 id인 no을 Writing 객체에 있는 writingNo에, auto_increment된 값이 반환해준다.

 

참고로 이를 위해서는 parameterType으로 넣어주는 객체에 selectKey 값을 반환해줄 변수가 필요하다.