본문 바로가기

개발자가 좋은건가??/Java, Jsp

[JAVA] iBatis에서 procedure 처리 방법


[JAVA] iBatis에서 procedure 처리 방법



2018. 11. 20 기준


MSSQL기준으로 작성합니다.

프로시저 PROC_MEMBER 있다고 가정하고 작성해볼께요~


//JAVA (저는 ServiceImpl에 작성했어요)

1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
public void joinMemberShip(User user) {
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("userId""test");
    map.put("memberName""홍길동");
    map.put("passWord""1234");
    this.dao.callMember(map);
 
    int  rtnCode = (Integer)map.get("rtnCode");
    if(rtnCode < 1 ) {
        System.out.println("가입실패" + rtnCode )
    }
}
cs


리턴 코드와 함께 실패여부를 확인할수 있게 작성해봤어요

실패했을때 throw new Exception 처리 해주면 더 좋겠죠??

//DAO

1
2
3
4
@Override
public void callMember(Map<String, Object> map) { 
    super.getSqlMapClientTemplate().queryForObject("UserSQL.callProcedureMember", map);
}
cs


//SQL

1
2
3
4
5
6
7
8
9
10
<parameterMap id="memberMap" class="java.util.Map">
    <parameter property="userId" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN" />
    <parameter property="memberName" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN" />
    <parameter property="passWord" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN" />     
    <parameter property="rtnCode" javaType="java.lang.Integer" jdbcType="INTEGER" mode="OUT" />
</parameterMap>
 
<procedure id="callProcedureMember" parameterMap="memberMap">
    {call PROC_MEMBER(?, ?, ?, ?)}
</procedure>
cs


procedure 의 parameterMap 과 parameterMap  id 명을 같게 맞추고 프로시져호출을 할수있어요.

반환되는 rtnCode를 리턴받아 확인할수 있답니다.

mode 속성값으로는 IN, OUT, INOUT 있습니다.




'개발자가 좋은건가?? > Java, Jsp' 카테고리의 다른 글

[JAVA] thread와 process의 차이  (0) 2018.11.29
[JAVA] Spring @Scheduled 표현방법  (0) 2018.11.23
[Java] 이전페이지 URL 확인  (0) 2018.08.08
SPRING SP EL 사용하기  (0) 2018.02.20
[Jsp] Jsp 기본문법  (0) 2018.01.19