[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