일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 면접관 경험 공유
- 기술 스택보다 중요한 것
- 백엔드 역할과 중요성
- 취향공동체
- 개발자 채용 기준
- aop(aspect-oriented programming)
- 근근히먹고살기
- 개발자 사고방식 중요성
- 데이터베이스 인덱스 면접
- msa 설계 면접
- techlog
- http 면접 정리
- spring 면접 대비
- 데이터 일관성
- 2024회고
- 백엔드 면접 질문
- 실력 있는 개발자 특징
- 마당보수
- redis캐시
- 커리어기록
- 백엔드 개발자 면접
- rest api 면접 질문
- 캐시 초기화
- jpa 면접 질문
- aws 인프라 면접
- 문제 해결력 면접 질문
- 백엔드 개발자 기술면접
- 좋은 개발자 뽑는 법
- 개발자 성장 과정
- 기술 면접 질문 예시
Archives
- Today
- Total
기록해야 성장한다
mySql select key로 새로 생성된 Auto Increment 값 받아오기. 본문
<insert id="user.insertUserAndGetId" parameterClass="user">
<![CDATA[
INSERT INTO t
(
name
)
VALUES
(
#name#
)
]]>
<selectKey keyProperty="id" resultClass="Integer">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
해당 INSERT 구문을 수행하고 selectKey에 정의한 구문을 수행하여 그 값을 반환한다. selectKey의 속성을 살펴보면, keyProperty
와 resultClass
가 있다.
keyProperty 속성을 설정해 주면 selectKey로 SELECT된 값을 전달인자의 변수값으로 설정해 준다. 소스코드의 user는 이름만 Bob
으로 설정해 주었다. 하지만 INSERT를 수행한 다음 user.getId()
의 값이 추가된 ID로 설정된 것을 볼 수 있다. 이 속성은 설정하는 경우만 해당 변수의 값(이 예제에서는 user의 id 변수)이 설정되므로 설정하지 않아도 문제는 없다.
resultClass는 selectKey
로 반환되는 값의 타입을 나타낸다. 이 타입과 동일한 타입으로 소스코드에서 casting해서 받으면 된다. LAST_INSERT_ID()
로 반환되는 값은 숫자이니 int로 받으면 될 것이다. 물론 LAST_INSERT_ID()
는 MySQL 함수이기 때문에 MySQL인 경우만 써야 한다. MySQL이 아닌 경우라면 INSERT된 값의 PK를 구할 수 있는 SELECT 구문을 적어주면 된다.
결과 값 확인. 파라미터로 넘긴 Param에 값이 들어와서 반환된다.
반응형
'TIL' 카테고리의 다른 글
http 기초 (0) | 2020.02.24 |
---|---|
Explain 정보보는법 (0) | 2019.06.13 |
log4j 로그레벨 (0) | 2019.05.22 |
grep (0) | 2019.05.13 |
ehcache (0) | 2019.05.10 |
Comments