상세 컨텐츠

본문 제목

Mybatis 키 자동 생성 사용하기(useGeneratedKeys, selectKey)

프레임워크/Mybatis

by 최승호 2022. 5. 11. 10:57

본문

Mybatis는 DB가 자동생성 키를 지원(mysql, mariadb 등)한다면 userGeneratedKeys 속성을 사용할 수 있고 지원하지 않은 DB(Oracle)는 <selectKey>를 사용할 수 있다.

1. userGeneratedKeys 사용

Key 자동증가 테이블 생성

create table tb_member (
	id int auto_increment primary key,
	password varchar(50) not null,
	name varchar(50)
);

 

id 컬럼에 자동증가 속성이 있는 테이블을 생성한다.

매퍼 파일

<insert id="insertMember" parameterType="Member" useGeneratedKeys="true" keyProperty="id">
	insert into tb_member (
		password,
		name
	)
	values (
		#{password},
		#{name}
	)
</insert>

 

테스트를 위해 이전에 사용했던 insert 문에서 id 부분만 삭제한다.

실행결과

 

id가 자동생성된 값으로 들어갔다.

2. selectKey 사용

테이블 및 시퀀스 생성

create table tb_member (
	id number primary key,
	password varchar2(50) not null,
	name varchar2(50)
);

CREATE sequence seq_member;

 

Member 정보를 담을 수 있는 테이블과 자동증가 값을 가져오기 위한 시퀀스를 생성한다.

매퍼파일

<insert id="insertMember" parameterType="Member">
	<selectKey keyProperty="id" resultType="int" order="BEFORE">
		select seq_member.nextval from dual
	</selectKey>
	insert into tb_member (
		id,
		password,
		name
	)
	values (
		#{id},
		#{password},
		#{name}
	)
</insert>

실행결과

 

useGeneratedKeys를 사용한 것과 같은 결과로 저장된다.

관련글 더보기

댓글 영역