반응형
- 나의 상황
: 마스터 테이블이 있고, 히스토리 테이블이 있다.
등록요청이 오면, 마스터 테이블에 insert 하고 그 키 값을 받아다가 히스토리 테이블에도 insert 를 시켜주어야한다. (마스터 테이블의 키 컬럼은 auto_increment 로 자동으로 넣어주고 있다.)
처음엔 마스터 테이블 등록 -> 마스터 테이블에서 등록된 키 값 조회 -> 히스토리 테이블 등록 이렇게 생각했는데.. 뭔가 계속 마음에 안들고.. 다른 방법이 있을 거 같고.. 해서 찾다가 알게 된 방법 selectKey!
selectKey 를 사용하면 insert 요청 시 보낸 객체에 insert 후 생성된 키 값이 셋팅되어진다!
- 사용법
1. MyBatis 쿼리에 useGeneratedKeys, keyProperty 작성! keyProperty 에 키 컬럼명을 넣어주면 된다.
<insert id="insertMaster" parameterType="mstRequest" useGeneratedKeys="true" keyProperty="keyColumn">
INSERT INTO MASTER_TABLE
... 생략...
</insert>
2. Java 에서 사용.
public int create(MasterRequest mstRequest){
//1. 마스터테이블에 insert
mapper.insertMaster(mstRequest); //selectKey를 사용했으므로 여기 mstRequest에 key 값이 셋팅되어있다!
//2. 히스토리테이블에 insert
HistoryRequest hstReq = new HistoryRequest();
hstReq.setKeyColumn(mstRequest.getKeyColumn());
..생략..
}
* 더 좋은 방법이 있다면 댓글로 알려주세요..!
반응형
'개발 > DB' 카테고리의 다른 글
[통계 쿼리] 재귀함수를 이용한 시간대별, 요일별, 일별, 월별 집계 쿼리 (2) | 2023.03.13 |
---|---|
[MySQL] on duplicate key update (키 값 여부에 따른 insert / update) (2) | 2023.02.02 |
[MySQL] mysql 에서 sequence 기능 nextval 사용하기. (0) | 2022.10.26 |
[MySQL] not exists, exists 사용하여 insert/update 하기. (0) | 2022.10.26 |
intelliJ 에서 springboot + cubrid 연결 시 만난 에러 : java.lang.UnsupportedOperationException] with root cause (1) | 2022.07.26 |