# ibatis insert(), update(), delete() return 값, 실행 후 성공 여부 확인
# insert() 후 PK값 받아오는 방법
# insert() 후 return값 사용 꼼수
# ibatis에서 insert(), update(), delete() 를 실행한 후 return되는 값
| 성공 | 실패 |
insert() | null | e 에러 |
update() | 1 | 0 |
delete() | 삭제된 row수 | 0 |
# insert return값 사용 꼼수TIP!
insert 성공 여부 받아와서 그 다음 로직을 처리해야 되는 경우 꼼수TIP !
1. insert 후 PK값 가져오기
1 2 3 4 5 6 | <insert id="insert" parameterClass="kr.co.tocsg.vo.Bean"> INSERT INTO ~~ <selectKey keyProperty="id" resultClass="int"> SELECT ID() </selectKey> </insert> |
예)
** 참고:DB 오라클
1 2 3 4 5 6 7 8 | <insert id="insertUser" parameterClass="kr.co.tocsg.vo.UserBean"> insert into INFO_USER ("USER_SEQ", "USER_ID", "USER_NAME", "REG_DT") values (USER_SEQ.nextval, #USER_ID#, #USER_NAME#, #REG_DT#) <selectKey keyProperty="user_seq" resultClass="int"> SELECT USER_SEQ.CURRVAL FROM DUAL </selectKey> </insert> |
2. update() 사용하기
ibatis에서 insert()하게 되면 성공 시 null을 리턴하고 실패 시 에러를 리턴하기 때문에
오브젝트 객체형으로 리턴 값을 받아와야한다.
(아~ 번거롭고 귀찮고 일관성 없음)
그래서 내가 써본 방법.
insert() 대신에 update()를 사용한다.
(검증된 방법인지 모르겠으나...)
Query.xml
1 2 3 4 | <insert id="insertUser" parameterClass="kr.co.tocsg.vo.UserBean"> INSERT INTO "INFO_USER"(user_id,user_nm) VALUES (#user_id#, #user_nm#) </insert> |
DAO.java
1 2 3 4 5 6 7 8 9 | public int insertUser(UserBean user) { int rst = 0; try { rst = DbManager.getSqlMapInstance().update("insertUser", user); } catch (SQLException e) { e.printStackTrace(); } return rst; } |
Proc.java
1 2 3 4 5 6 7 | int rst = userDao.insertUser(bean); if(rst > 0){ //성공 }else{ //실패 } |
이렇게 update() 함수를 사용해 insert쿼리를 날려주면
return 값으로 1을 반환한다.
출처: http://blog.naver.com/PostView.nhn?blogId=elren&logNo=220796602129
'ibatis && mybatis' 카테고리의 다른 글
[ibatis] 리스트 or 배열 iterate 사용 (0) | 2018.08.26 |
---|---|
[ibatis & mybatis] ORA-00911: invalid character / 쿼리 실행 시 문제 없을 때 (0) | 2017.08.06 |
[ibatis] 쿼리 작성할 때 속성/바이너리 조건 속성 (0) | 2017.06.11 |
[mybatis/ibatis] 쿼리문 리턴 결과 차이 (0) | 2017.05.18 |
[ibatis] select, update, delete에 iterate 사용 방법 (0) | 2017.03.18 |