[Spring] mybatis insert 쿼리 실행 후 pk 리턴값 받기

 

A 테이블에 insert 후 해당 pk로 -> B 테이블 fk로 insert 해야 하는 경우
Insert 후 Select 하는 방법은 비효율적이라고 생각

 

방법
  • useGenerateKeys : "true"시 자동으로 생성한 키 값 반환
  • keyProperty : 리턴된 키를 어느 필드에 set 할건지

 

예시
  • insertUser 후 pk 값인 userSn을 리턴 받는다
<insert id="insertUser" parameterType="UserVO" useGeneratedKeys="true" keyProperty="userSn">
    INSERT INTO tb_user(
        user_id,
        user_nm,
        user_mphon_no
    ) VALUES (
        'hong123',
        '홍길동',
        '01012345678'
    )
</insert>
  • UserDAO
@Mapper
public interface UserDAO {
	int insertUser(UserVO userVO);
}
  • UserVO
package com.test.user.vo;

public class UserVO {

    private Integer userSn;
    private String userId;
    private Integer userNm;
    private String userMphonNo;

    public Integer getUserSn() {return userSn;}

    public String getUserId() {return userId;}
    public void setUserId(String userId) {this.userId = userId;}

    public Integer getUserNm() {return userNm;}
    public void setUserNm(Integer userNm) {this.userNm = userNm;}

    public String getUserMphonNo() {return userMphonNo;}
    public void setUserMphonNo(String userMphonNo) {this.userMphonNo = userMphonNo;}
}

 

 

mybatis Query 성공 시 기본 리턴 값
  • Select : Select문에 해당하는 결과
  • Insert : 1 (다중 Insert 1)
  • Update : Update 된 행의 개수(없으면 0)
  • Delete : Delete 된 행의 개수(없으면 0)