369
2014-11-12 20:27:09
0
저도 가물가물해서 찾아 봤는데...
아마도...
가. insert()는 성공 시 null이 반환 실패하면 에러 발생
나. update()는 성공 시 1 실패 시 0 반환
다. delete()는 삭제한 row수를 반환
그러므로 작업 반환에 대한 결과 때문에 그런것 같습니다.
즉 insert 성공 여부 판단 부분 때문에 변환하여 사용하는 것 같습니다.
=======================================================================================
아래는 다른 예제 입니다만... 리턴 값에 대한 방식을 달리하여 성공여부 판단 부분입니다.
[출처]http://yjacket.tistory.com/51
윗분의 페이지에 있는 소스를 예제로 하면...
1. insert에 대한 기본 키 값을 모를때
자바에서
Integer id = (Integer) sqlMapClient.insert(“insertProduct”, product); <========== 여기서 insert 메소드를 사용
return id > 0; // product.productId 에도 같은 값이 저장됨
Product.xml
<insert id="insertProduct">
<selectKey keyProperty="productId" resultClass="int" type="pre">
SELECT S_Products.NEXTVAL FROM DUAL
</selectKey>
INSERT INTO Products VALUES (#productId#, #productName#, #productCode#)
</insert>
2. 허나 위와 달리 insert에 필요함 키값을 알고 있으면.
기본키를 이용한 성공여부 판단이 불가능하기 때문에 insert 구문을 update 메서드로 실행하여 영향 받은 행수를 평가한다.
자바..
int rows = sqlMapClient.update(“insertProduct”, product);
return rows > 0;
Product.xml
<insert id="insertProduct">
INSERT INTO Products VALUES (#productId#, #productName#, #productCode#)
</insert>
=======================================================================
작성자님께서 질문한 것과는 약간 다른 예제 이기는 하지만..
저의 개인적 결론---------------
요즘 제가 스프링이랑 iBatis를 사용한지 좀 되서 헷갈리기는 하는데..
<update>insert구분</update>
위와 같은 형식의 iBatis 구문이 에러가 나지 않는다면...
리턴값을 받아오는 패턴을 달리하여 성공여부 판단을 위하여 사용한게 아닐까요???
뭐 그렇게 생각되네요..