| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 내가 읽은 경제 2025-10-27
- KODEX200
- 에센피
- KOSPI
- 단대오거리 헬스장
- 내가 읽은 경제
- 오늘 내가 읽은 경제
- 달러인덱스
- 와이투짐
- 온스당금
- 직업에관하여
- 남자아이폭력성
- 창고관리인
- S&P 500
- 코스피
- 개발자에관하여
- 금값
- 2024회고
- 경제지표
- 원달려환율
- 공포탐욕지수
- S&P 500 VIX
- 금
- 금광동 헬스장
- ace krx금현물
- 에세이
- S&P500
- 파모스짐
- 인생
- 원달러환율
Archives
- Today
- Total
기록해야 성장한다
Mybatis Select Key 본문
insert 후에 AUTO_INCREMENT 로 생성된 pk 값을 가져오려고하는데
service 단에서 아무리 로그를 찍어봐도 값이 1이 찍혀서 문제가 됨.
https://vesselsdiary.tistory.com/59
이글을 통해서 힌트를 얻고 mapper를 호출할 때 포함한 파라미터 vo에서
getKey()를 하니까 그안에 새로 생성된 pk의 값이 들어있었다..
왜 쿼리를 리턴 받는 값에는 1이 찍히고 파라미터로 던진 vo에는 pk가 담겨 있는 지 모르겠음.
@SelectKey(before = false, keyProperty = "bcId", resultType = int.class, statement = ""
+ "SELECT LAST_INSERT_ID() as bcId" )
@SelectKey(before = false, keyProperty = "testId", resultType = int.class, statement = ""
+ "SELECT LAST_INSERT_ID() as testId" )
@Insert(""
+ " INSERT INTO tn_billboard_comment "
+ " ("
+ " BI_ID, "
+ " BC_CONTENTS, "
+ " DELETE_YN, "
+ " REG_TYPE, "
+ " REG_ID, "
+ " REG_DT, "
+ " MOD_TYPE, "
+ " MOD_ID, "
+ " MOD_DT) "
+ " VALUES ( "
+ " #{biId}, "
+ " #{bcContents}, "
+ " 'N' , "
+ " 'U', "
+ " #{regId}, "
+ " now(), "
+ " 'U', "
+ " #{modId}, "
+ " now() ) "
+ "")
int setComment(TnBillboardComment tnbillboardComment);
keyProperty 값을 변경하니까 아래처럼 에러가 났다.
keyProperty로 설정한 testId의 setter를 찾지 못해서 에러가 발생했다는 내용
ERROR|2019-10-23 17:13:44,081|T100000002|com.ljsnc.api.exception.JaxRsExceptionMapper 36|Unmanaged Exception
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException:
No setter found for the keyProperty 'testId' in com.ljsnc.api.model.TnBillboardComment
myBatis 에서 매개변수에 접근하여 값을 설정해주는것 같다.
그럼 매개변수가 Map 일때는 어떻게 되는거징?
map 으로 던져도 정상적으로 key properties 값이 추가되어 반환된다.
{bcContents=bcContents, regId=44, biId=4, modId=44}
{bcId=21, bcContents=bcContents, regId=44, biId=4, modId=44}
keyProperty 값의 setter 가 없으면 에러가 나는 VO보다는
일단은 Map에 값을 넣어 주는게 좋은 것 같다.
그럼 service 단의 변수에 담긴 1은 어디서 온 값일까? 쿼리의 결과값으로 insert update된 row의 갯수 인 것인가?
반응형
'TIL' 카테고리의 다른 글
| java send mail (0) | 2021.10.29 |
|---|---|
| Mysql Paging (0) | 2021.10.29 |
| Mybatis Select Key (0) | 2021.10.29 |
| cxf multipart file upload (0) | 2021.10.29 |
| 대댓글 MySql 스키마 (0) | 2021.10.29 |
Comments