기록해야 성장한다

mySql select key로 새로 생성된 Auto Increment 값 받아오기. 본문

TIL

mySql select key로 새로 생성된 Auto Increment 값 받아오기.

sodapapa-dev 2019. 3. 10. 16:38
<insert id="user.insertUserAndGetId" parameterClass="user">
    <![CDATA[
        INSERT INTO t
        (
            name
        )
        VALUES
        (
            #name#
        )
    ]]>
    <selectKey keyProperty="id" resultClass="Integer">
        SELECT LAST_INSERT_ID()
    </selectKey>
</insert>

해당 INSERT 구문을 수행하고 selectKey에 정의한 구문을 수행하여 그 값을 반환한다. selectKey의 속성을 살펴보면, keyProperty와 resultClass가 있다.

keyProperty 속성을 설정해 주면 selectKey로 SELECT된 값을 전달인자의 변수값으로 설정해 준다. 소스코드의 user는 이름만 Bob으로 설정해 주었다. 하지만 INSERT를 수행한 다음 user.getId()의 값이 추가된 ID로 설정된 것을 볼 수 있다. 이 속성은 설정하는 경우만 해당 변수의 값(이 예제에서는 user의 id 변수)이 설정되므로 설정하지 않아도 문제는 없다.


resultClass는 selectKey로 반환되는 값의 타입을 나타낸다. 이 타입과 동일한 타입으로 소스코드에서 casting해서 받으면 된다. LAST_INSERT_ID()로 반환되는 값은 숫자이니 int로 받으면 될 것이다. 물론 LAST_INSERT_ID()는 MySQL 함수이기 때문에 MySQL인 경우만 써야 한다. MySQL이 아닌 경우라면 INSERT된 값의 PK를 구할 수 있는 SELECT 구문을 적어주면 된다.


결과 값 확인. 파라미터로 넘긴 Param에 값이 들어와서 반환된다.


반응형

'TIL' 카테고리의 다른 글

http 기초  (0) 2020.02.24
Explain 정보보는법  (0) 2019.06.13
log4j 로그레벨  (0) 2019.05.22
grep  (0) 2019.05.13
ehcache  (0) 2019.05.10
Comments