Develop
[Mybatis] useGeneratedKeys 사용 방법 + insert시 결과 값이 1만 나올 때 본문
<사용법>
useGeneratedKeys="true"
keyProperty="내가 원하는 값을 받아갈 변수 이름" ex) inquiry VO에서 idx라는 변수
keyColumn=" pk로 지정한 컬럼명 "
을 쿼리 쪽에 추가해준다
예를 들어
useGeneratedKeys="true"
keyProperty="userno"
keyColumn="idx"
라고 지정했으면
사진처럼 db의 idx값이 userno라는 변수에 담긴다
ex)
<insert id="insertInquiryApply" parameterType="apps.model.Inquiry" useGeneratedKeys="true" keyProperty="idx" keyColumn="idx">
INSERT INTO /* insertInquiryApply */
T_INQUIRY
(
Consult
, Content
, Email
)
VALUES
(
#{consult}
, #{content}
,#{email}
)
</insert>
mysql에서 pk를 auto_increment로 설정했기 때문에 쓸 수 있는거고
나와 같은 설정이 아니라면 selectKey를 사용해야한다.
selectKey를 써야하는 상황
ex) mysql이 아닌 oracle DB 사용 - 시퀀스 이용해야함
ex) auto_increment 가 지정이 되지않은 pk 값 가져올 때
ex) pk가 아닌 다른값을 가져올 때
주의할 점은
int idx = 쿼리 실행;
이렇게 코드를 실행해도 idx에는 1 or 다른 값만 들어온다
즉 파라미터 값이 VO / DTO / Map 등의 형태라면
내가 가져오고 싶었던 값은 파라미터에 담긴다
내가 보낸 파라미터 inquiry Vo 이다
쿼리 실행 후에
이렇게 원하던 idx(mySQL - PK) 값이 담겨있음을 확인할 수 있다.
int idx로 변수 생성해서 계속 return값을 받아오려고 했는데
그게 아니라 자동으로 담기는거였다
나는 일어나지 않았지만
검색하다 알게된 다른 오류
받아오는 값이 null or 이상한값이면 설정 값을 확인해보자
mybatis config 에서 defaultExecutorType 의 설정값이 batch 로 되어 있어있다면 다른 값이나 주석처리하기
다른 값으로는
SIMPLE : 아무것도 안함
REUSE : 재사용
이 있다
'웹 개발 > Spring' 카테고리의 다른 글
[Spring-Security] 스프링 시큐리티를 사용하여 로그인 기능 구현 - 1 (0) | 2024.06.24 |
---|---|
[Tika] 파일 업로드시 확장자 확인하기 (0) | 2024.06.21 |
[Spring] Eclipse 설치 (1) | 2024.06.13 |
[Spring Boot] Tiles 기본 설정 및 사용법 + 예제 (1) | 2024.03.09 |
[Spring-Boot] Bean Validator 라이브러리 이용하여 유효성 검사하기 (1) | 2024.03.07 |