[Spring] Mybatis, selectKey 활용하기
- Web/Spring
- 2021. 6. 7.
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를 응용해보았습니다.
모두 파이팅입니다.
'Web > Spring' 카테고리의 다른 글
[Spring] 파일 업로드 설정하기 (0) | 2021.07.21 |
---|---|
[Spring] 갑자기 프로젝트가 실행이 되지 않는다. (0) | 2021.07.19 |
[Spring Error] The reference to entity "characterEncoding" must end with the ';' delimiter. (0) | 2021.06.04 |
[Spring] org.springframework.web.multipart.MultipartHttpServletRequest (0) | 2021.06.03 |
[Spring] Properties 고급버전 (0) | 2021.05.17 |