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
위 내용을 참고해서 다음과 같이 수정하면
<insert id="insertMember" parameterType="MemberDTO" useGeneratedKeys="true" keyProperty="id">
INSERT INTO member (NAME, EMAIL, ORGANIZATION)
VALUES (#{name}, #{email}, #{organization})
</insert>
이렇게 한 후 parameterType으로 사용한 MemberDTO객체의 id 변수에 자동생성된 값이 할당된다.
728x90