개발 등/MyBatis

MyBatis auto_increment 값 조회

darkhorizon 2023. 4. 5. 17:21
728x90
반응형

MyBatis 를 이용해서 데이터를 생성할 때 자동생성 (auto_increment)을 사용할 때가 있다.

여러 이유로 (예를 들면 게시판 생성 후 게시판에 연관된 파일 테이블에 게시판 아이디를 사용해야 하는 경우 등) 생성할 때 사용한 auto_increment 값을 참조해야 할 경우 다음과 같이 처리하면 된다.

 

Table Schema

CREATE TABLE Member (
    id bigint NOT NULL AUTO_INCREMENT,
    name varchar(255) NOT NULL,
    email varchar(255) NOT NULL
);

DTO class

@Setter @Getter
@ToString
@Builder
public class MemberDTO {
    private int id;
    private String name;
    private String email;
    private String organization;
}

 

Mapper xml

    <insert id="insertMember" parameterType="MemberDTO">
        INSERT INTO member (NAME, EMAIL, ORGANIZATION)
        VALUES (#{name}, #{email}, #{organization})
    </insert>

 

위의 매퍼 파일에서 어떤 이유로 해서 인서트에 사용된 id 의 값이 필요하면

useGeneratedKeys와 keyProperty 속성을 사용하면 된다.

공식문서에 소개된 속성의 내용은 다음과 같다.

https://mybatis.org/mybatis-3/ko/sqlmap-xml.html

 

MyBatis – 마이바티스 3 | 매퍼 XML 파일

Mapper XML 파일 마이바티스의 가장 큰 장점은 매핑구문이다. 이건 간혹 마법을 부리는 것처럼 보일 수 있다. SQL Map XML 파일은 상대적으로 간단하다. 더군다나 동일한 기능의 JDBC 코드와 비교하면

mybatis.org

 

위 내용을 참고해서 다음과 같이 수정하면 

    <insert id="insertMember" parameterType="MemberDTO" useGeneratedKeys="true" keyProperty="id">
        INSERT INTO member (NAME, EMAIL, ORGANIZATION)
        VALUES (#{name}, #{email}, #{organization})
    </insert>

 

이렇게 한 후 parameterType으로 사용한 MemberDTO객체의 id 변수에 자동생성된 값이 할당된다.

728x90