[Mybatis] 프로시저 호출 개념과 예제

프로시저(procedure)는 데이터베이스 내에서 저장된 일련의 SQL 문들을 그룹화한 것으로, 하나의 단위로 실행되는 데이터베이스 오브젝트입니다. MyBatis에서는 프로시저 호출을 지원하여 프로시저를 실행하고 결과를 처리할 수 있습니다. 아래는 프로시저 호출의 개념과 예제입니다.

예제: 프로시저 호출

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.util.HashMap;
import java.util.Map;

public class StoredProcedureExample {

    public static void main(String[] args) {
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
                .build(StoredProcedureExample.class.getResourceAsStream("/mybatis-config.xml"));

        try (SqlSession sqlSession = sessionFactory.openSession()) {
            // 맵 형태의 매개변수 설정
            Map<String, Object> parameterMap = new HashMap<>();
            parameterMap.put("inputParam", "SomeInputValue");
            
            // 프로시저 호출
            sqlSession.selectOne("callSampleProcedure", parameterMap);
            
            // 프로시저의 결과 값 확인
            String outputValue = (String) parameterMap.get("outputParam");
            System.out.println("Output Value from Procedure: " + outputValue);
        }
    }
}` 

매퍼 XML 파일:

SampleMapper.xml:

<!-- 프로시저 호출을 위한 쿼리 -->
<select id="callSampleProcedure" statementType="CALLABLE">
  { CALL sample_procedure(#{inputParam, mode=IN}, #{outputParam, mode=OUT, jdbcType=VARCHAR}) }
</select>` 

위의 예제에서는 프로시저를 호출하고, 호출 결과를 처리하고 있습니다. CALLABLE 타입으로 쿼리를 정의하며, #{inputParam}은 프로시저의 입력 매개변수를, #{outputParam}은 프로시저의 출력 매개변수를 나타냅니다.

프로시저를 호출하면 parameterMap을 사용하여 입력 매개변수 값을 설정하고, 프로시저 실행 후 결과를 맵에서 추출하여 출력값을 확인할 수 있습니다. 이를 통해 MyBatis를 사용하여 프로시저를 호출하고 결과를 처리할 수 있습니다.