ibatis && mybatis

[ibatis] insert(), update(), delete() return 값, 실행 후 성공 여부 확인 / insert() 후 PK값 받아오는 방법 / insert() 후 return값 사용 꼼수

도미노& 2017. 3. 18. 15:39

# 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