insert 전/후에 PK 값(시퀀스, AUTO_INCREMENT 등)을 가져오는 보조쿼리

selectKey

<mapper namespace="com.haenin.transactional.section01.annotation.OrderMapper">
    <insert id="insertOrder"
            **parameterType="com.haenin.transactional.section01.annotation.Order"**>
        INSERT
          INTO TBL_ORDER
        (
          ORDER_DATE
        , ORDER_TIME
        , TOTAL_ORDER_PRICE
        )
        VALUES
        (
          #{orderDate}
        , #{orderTime}
        , #{totalOrderPrice}
        )
        **<selectKey keyProperty="orderCode"
                   order="AFTER"
                   resultType="_int">
            // SELECT MAX(ORDER_CODE) FROM TBL_ORDER
            SELECT LAST_INSERT_ID()
        </selectKey>**
    </insert>
</mapper>

(1) keyProperty

(2) order

(3) resultType

스크린샷 2025-09-16 오전 11.36.53.png

selectKey는 insert와 붙여서 처리하므로 불필요한 I/O 줄임