쉽게 쉽게

[ibatis] DML(insert, update, delete)의 return값 본문

프로젝트 경험

[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

잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다.

 

 

반응형