송민준의 개발노트

mybatis procedure 사용법 본문

웹/Spring Framework

mybatis procedure 사용법

송민준 2020. 10. 19. 13:04

Spring 및 mybatis가 세팅이 되어 있다는 가정 하에 사용법이다.

(먼저 서비스단에서 DAO 가 DI 됨)

1. 서비스단

objectDAO.call("리소스이름", 파람데이터);
if(!"식별값".equals(파람데이터.get("에러코드")) {
	throw 어떤Exception("~", 파람데이터.get("에러메시지").toString());
}

2. DAO

@Autowired
private SqlSessionTemplate sqlSession;
public Object call(String sql, Map(또는 커스텀Object) map) throws Exception {
	return sqlSession.update(sql, map);
}

 

3. XML

<mapper namespace="식별명">
	<resultMap id = "식별가능한 이름(패키지에서)" type="map"/>
    <update id ="리소스명" statementType="CALLABLE" parameterType="map">
    	{call
        	프로시저명(
            	#{파람1,				mode=IN, jdbcType=VARCHAR, javaType=string}
				, #{파람2, 			mode=IN, jdbcType=VARCHAR, javaType=string}
			    , #{파람3, 			mode=IN, jdbcType=VARCHAR, javaType=string}
				, #{파람4,			mode=IN, jdbcType=VARCHAR, javaType=string}
				, #{에러코드,		  mode=OUT,jdbcType=VARCHAR, javaType=string, resultMap=식별가능한 이름(패키지에서)}
				, #{에러메시지,		 mode=OUT,jdbcType=VARCHAR, javaType=string, resultMap=식별가능한 이름(패키지에서)}
                )
           }
    </update>
</mapper>

 

서비스단에서 파람으로 넣었던 object or map 에 프로시저 결과값(out)이 주입된다.

XML에서 resultMap으로 선언했던 값들은 고유해야 한다.