[Spring] Mybatis, selectKey 활용하기

반응형

Mybatis Sequence 만들기

 

 

  SelectKey 활용하기

 selectKey는 myBatis가 제공하는 기능 중 하나입니다. 서브 쿼리의 기능을 수행하고 있으며, 대표적인 기능으로 시퀀스 기능을 담당합니다. 일반 DB의 SQL문 보다 MYBATIS의 SQL문이 육안으로 보기에 더 편해진다는 장점이 있습니다.

 

 

selectKey에서 가장 유심히 봐야한 것은 keyProperty와 order입니다.

keyProperty는 해당 SQL문에서 해당 쿼리문의 결괏값을 불러오게 하는 key 값입니다.

 

order는 대표적으로 before와 after로 나뉩니다.

before는 본 SQL문이 실행되기 전에 먼저 실행되며, after는 본 SQL문이 실행된 후 실행되는 차이가 있습니다.

 

그 외 parameterType와 resultType가 있지만, 기존 myBatis에서도 활용하고 있으므로 설명은 생략하겠습니다.

 

 

  이전 SQL 문

 해당 SQL문은 INSERT문에 사용된 서브 쿼리문입니다.

기존 INSERT문에 SEQUENCE의 기능을 인위적으로 넣다 보니 INSERT문이 지저분해진 것을 확인할 수 있습니다.

 

 

  SelectKey 적용한 SQL 문

 그러나 selectKey의 활용으로 기존에 지저분해 보이던 SQL문이 정리되어 알아보기 쉽게 변한 것을 확인할 수 있습니다.

 

keyProperty의 AREA_SEQ가 Insert의 #{AREA_SEQ}로 대신 삽입한 것을 확인할 수 있습니다.

 

 

 

 

  마무리

 처음부터 SEQUENCE를 사용했다면, 이런 일이 발생하지 않는 문제였습니다. 그러나 새로운 프로젝트가 아닌 유지보수로 만지게 될 경우, 새로운 도전은 해당 프로젝트의 난이도를 좀 더 높이는 부작용이 존재합니다.

 

따라서 저는 기존 프로젝트가 유지하는 방향을 최대한 유지시키고자 MYSQL에서 SEQUENCE를 사용하지 않고, MYBATIS에서 SEQUENCE를 응용해보았습니다.

 

모두 파이팅입니다.

반응형

댓글

Designed by JB FACTORY