[ibatis] <procedure> call 사용

2019. 10. 7. 17:14 Java 관련/MyBatis, iBatis

<procedure> call 사용


ibatis에서 사용하는 <statement> 의 종류에는 여러가지 있다.


[Java Web/MyBatis, iBatis] - [ibatis] sqlMap XML 파일의 기본 구조


이중에는 저장 프로시저를 call 해서 사용할 수 있는 <procedure> 도 포함된다.


저장 프로시저 <procedure> 는 아래와 같이 사용된다



<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-2.dtd">

    
<sqlMap namespace="Product">

    <parameterMap id="swapParameters" class="map">
         <parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String"
             mode="INOUT"/>

         <parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" 
             mode="INOUT"/>
 
    </parameterMap>
    
    <procedure id="swapEmailAddresses" parameterMap="swapParameters">
         {call swap_email_address(?,?)}
    </procedure>

</sqlMap>


위와 같이 프로시저를 호출하는 것은 파라미터 객체(map)의 email1 과 email2 의 값을 교체하는 것이다.

파라미터 객체는 파라미터 mapping의 mode 속성값이 "INOUT" 또는 "OUT" 일 경우에만 변경된다.

다른 경우는 변경되지 않고 남는다.


JDBC에서 Porcedure를 호출할 때는 JDBC CallableStatement 를 확인해 본다.



출처: https://hyeonstorage.tistory.com/281?category=549765 [개발이 하고 싶어요]