Skill/spring

[mybatis] Procedure 호출 방법(out 결과 받기)

진열사랑 2020. 10. 13. 19:25

출처 : m.blog.naver.com/PostView.nhn?blogId=yysvip&logNo=220112219074&proxyReferer=https:%2F%2Fwww.google.com%2F

 

<parameterMap class="map" id="procParam">
    <parameter property="P_IN1"  jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
    <parameter property="P_IN2"  jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
    <parameter property="P_OTU1" jdbcType="DECIMAL" javaType="long"             mode="OUT"/>
    <parameter property="P_OUT2" jdbcType="DECIMAL" javaType="long"             mode="OUT"/>
</parameterMap>
 
<procedure id="proc_test" parameterMap="procParam">
    <![CDATA[
       {call PROC_TEST(?, ?, ?, ?)}
   ]]>
</procedure>

-----------------------

procedure의 out 결과 받기

에러발생 null poin error

[Dao.java]
public int setBsmidn(Map<String,Object> param) throws Exception {
	String daoNm = param.get("daoNm").toString();
	return selectOne(daoNm + ".setBsmidn", param); 
    // 요부분 에러 왜냐.. 반환값이 없기 때문에..     
}
//--> 다음과 같이 수정
public void setBsmidn(Map<String,Object> param) throws Exception {
	String daoNm = param.get("daoNm").toString();
	selectOne(daoNm + ".setBsmidn", param);
}
<select id="setBsmidn" parameterType="HashMap" resultType="HashMap" statementType="CALLABLE">
    { 
    	call PR_SET_BSMIDN1(
                 #{p_tablename,mode=IN,jdbcType=VARCHAR}
                 , #{p_bsm_idn_opt,mode=IN,jdbcType=VARCHAR}
                 , #{p_upd_cnt,mode=OUT,jdbcType=INTEGER }
             )
    }
</select>