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>
'Database' 카테고리의 다른 글
[Spring] 해시태그 검색 데이터베이스 설계 및 쿼리 구성 (0) | 2021.05.27 |
---|---|
[Mybatis] select 문에 String 검색어 추가하기 (0) | 2021.05.02 |
[데이터베이스] DDL, DML, DCL, DQL, TCL 의 정의 및 주요함수 (0) | 2021.03.12 |
[오라클] 일정 숫자만큼 규칙적으로 증가하는 입력 [시퀀스] - 생성, 사용, 수정, 초기화하기 (0) | 2021.03.11 |
[오라클] 뷰 생성, 수정하기 (0) | 2021.03.11 |
댓글