[java] MyBatis에서 저장 프로시저 사용하기

이번 포스트에서는 Java 프로젝트에서 MyBatis를 사용하여 저장 프로시저를 실행하는 방법에 대해 알아보겠습니다.

1. MyBatis 설정

먼저, MyBatis 설정 파일에서 저장 프로시저를 사용하려는 데이터베이스의 연결 정보를 추가해야 합니다.

<configuration>
  <!-- 데이터베이스 연결 설정 -->
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC" />
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/mydatabase" />
        <property name="username" value="myuser" />
        <property name="password" value="mypassword" />
      </dataSource>
    </environment>
  </environments>
  
  <!-- 매퍼 설정 -->
  <mappers>
    <mapper resource="mybatis/mapper.xml" />
  </mappers>
</configuration>

2. 저장 프로시저 매퍼 파일 작성

다음으로, 저장 프로시저를 호출하는 MyBatis 매퍼 파일을 작성해야 합니다. 매퍼 파일은 SQL 쿼리를 정의하는 역할을 합니다.

<mapper namespace="com.example.MyMapper">
  <!-- 저장 프로시저 매핑 -->
  <select id="callStoredProcedure" statementType="CALLABLE" parameterType="java.util.Map">
    { call my_stored_procedure(#{param1, mode=IN, jdbcType=VARCHAR}, #{param2, mode=IN, jdbcType=VARCHAR}, #{result, mode=OUT, jdbcType=INTEGER}) }
  </select>
</mapper>

3. Java 코드에서 저장 프로시저 실행

이제 Java 코드에서 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 MyBatisExample {
  public static void main(String[] args) {
    String resource = "mybatis/mybatis-config.xml";
    Reader reader = Resources.getResourceAsReader(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
    SqlSession sqlSession = sqlSessionFactory.openSession();

    try {
      // 저장 프로시저를 호출하기 위해 매개 변수를 설정
      Map<String, Object> paramMap = new HashMap<>();
      paramMap.put("param1", "value1");
      paramMap.put("param2", "value2");
      paramMap.put("result", null);

      // 저장 프로시저 실행
      sqlSession.selectOne("com.example.MyMapper.callStoredProcedure", paramMap);

      // 저장 프로시저 실행 결과 가져오기
      int result = (int) paramMap.get("result");
      System.out.println("Stored procedure result: " + result);
    } finally {
      sqlSession.close();
    }
  }
}

위의 예제 코드에서는 MyBatis 설정 파일과 매퍼 파일을 사용하여 SqlSession을 만들고, 저장 프로시저를 호출합니다. 그 후, 매개 변수로서 맵을 사용하여 저장 프로시저의 결과 값을 받아올 수 있습니다.

이제 Java 프로젝트에서 MyBatis를 사용하여 저장 프로시저를 실행하는 방법을 알게 되었습니다. 이렇게 함으로써 데이터베이스와의 상호작용을 보다 유연하고 편리하게 수행할 수 있습니다.

참고 자료