프로젝트 경험
[ibatis] DML(insert, update, delete)의 return값
곱마2
2023. 7. 23. 14:33
반응형
1. 이슈
프로젝트 도중 ibatis를 이용한 insert문을 작성했다. 그리고 return 값을 idx로 받았다.
그러나 이 insert 결과로 NullPointException이 발생했다.
분명히 모든 파라미터 값도 잘 들어와 있고 sql 문만을 실행했을 때도 잘 작동했는데, NullPointException이 뜨니 당황했다.
그래서 이 이슈를 해결하기 위해 ibatis의 DML문이 return 하는 결과값을 찾아봤다.
int idx =sqlMapClientTemplate.insert("user.insertRequest", request_map);
-- nullPointException이 뜨는 오류 발생!! --
2. ibatis return값
성공 | 실패 | |
insert() | null | 에러 |
update() | 1 | 0 |
delete() | 삭제된 row 수 | 0 |
insert문 성공 시 null을 리턴하기 때문에, nullPointException이 떴던 것이다.
때문에 리턴 값을 받는 idx를 삭제해주니 오류가 사라졌다.
sqlMapClientTemplate.insert("user.insertRequest", request_map);
단 리턴값을 받아야하는 상황이라면 다른 방법을 사용해야 한다.
<insert id="insertRequest" parameterClass="java.util.Map">
<selectKey keyProperty="seq" resultClass="int">
SELECT
result_seq.nextval FROM dual
</selectKey>
INSERT INTO request (
seq,
-- insert 내용은 생략--
)
</insert>
이렇게 <selectKey>를 설정하면 return 값으로 받을 수 있다.
(seq 값을 return)
int idx =sqlMapClientTemplate.insert("user.insertRequest", request_map);
https://hee-kkk.tistory.com/16
[ibatis] insert(), update(), delete() return 값, 실행 후 성공 여부 확인 / insert() 후 PK값 받아오는 방법 / ins
# ibatis insert(), update(), delete() return 값, 실행 후 성공 여부 확인# insert() 후 PK값 받아오는 방법# insert() 후 return값 사용 꼼수 # ibatis에서 insert(), update(), delete() 를 실행한 후 return되는 값 성공실패 inse
hee-kkk.tistory.com
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |

반응형