본문 바로가기
Database

[MyBatis] insert한 컬럼의 id를 return하기

by 서피 2021. 5. 2.

insert문을 실행한 후 해당 컬럼의 id를 바로 return해주고 싶었다.

<!-- 회사 등록 -->
<insert id="register" parameterType="kr.co.teamflight.company.model.vo.CompanyVO">
		INSERT INTO COMPANY( MB_NO
					, CO_URL
					, CO_NAME
				) VALUES (
		   			 #{ownerNumber}
		   			, #{url}
		   			, #{name}
				)
		<selectKey resultType="int" keyProperty="number" order="AFTER"> <!-- 입력후 co_no를 리턴함 -->
			SELECT LAST_INSERT_ID()
		</selectKey>
</insert>

<insert>문 내부에 <selectKey>문을 작성하면 해당 insert 직후에 id를 리턴받을 수 있다.

 

 

 

 

리턴된 id값은 DAO에서 받아올 수 있다.

insert했던 companyNumber의 id값이 리턴된 값으로 변경된 상태이다.

@Override
public CompanyVO selectOneByNumber(int companyNumber) {
	return sqlSession.selectOne("companyMapper.selectOneByNumber", companyNumber);
}

 

 

 

 

 

데이터베이스가 오라클인 경우

<insert id="insertStudy" parameterType="Study">
		<selectKey keyProperty="studyNo" resultType="int" order="BEFORE">
			select SEQ_STUDY.nextval FROM DUAL
		</selectKey>
		INSERT INTO STUDY VALUES (SEQ_STUDY.NEXTVAL, 
                                ... // 이하 insert문 생략
	</insert>

댓글