웹/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으로 선언했던 값들은 고유해야 한다.