MyBatis를 사용하여 저장 프로시저(Stored Procedure)를 호출하고 매핑하는 방법은 다소 복잡할 수 있지만, 아래의 예제를 통해 기본적인 프로시저 매핑을 보여드리겠습니다. 프로시저 호출 및 매핑은 데이터베이스 종류에 따라 다를 수 있으므로, 사용하는 데이터베이스에 따라 설정을 조정해야 합니다. 아래 예제는 MySQL 데이터베이스를 기준으로 합니다.
예제: 프로시저 매핑
-
MySQL에서 프로시저 생성:
먼저 MySQL 데이터베이스에서 예제 프로시저를 생성합니다.
DELIMITER //
CREATE PROCEDURE GetEmployee(IN employeeId INT)
BEGIN
SELECT * FROM employees WHERE id = employeeId;
END //`
-
Java 클래스 생성:
프로시저 결과를 매핑할 Java 클래스를 생성합니다.
public class Employee {
private int id;
private String name;
private String department;
// Getter와 Setter 메서드
}`
-
MyBatis XML 매퍼 파일 작성:
프로시저 호출을 위한 XML 매퍼 파일을 작성합니다.
<!-- EmployeeMapper.xml -->
<mapper namespace="com.example.EmployeeMapper">
<resultMap id="employeeResultMap" type="com.example.Employee">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="department" column="department" />
</resultMap>
<select id="getEmployee" parameterType="map" resultMap="employeeResultMap">
{call GetEmployee(#{employeeId, mode=IN, jdbcType=INTEGER})}
</select>
</mapper>`
-
Java 인터페이스 생성:
프로시저를 호출하기 위한 매퍼 인터페이스를 생성합니다.
@Mapper
public interface EmployeeMapper {
Employee getEmployee(@Param("employeeId") int employeeId);
}`
-
Spring Boot 어플리케이션 설정:
Spring Boot 어플리케이션에서 MyBatis를 설정합니다.
DataSource
및SqlSessionFactory
설정을 필요에 따라 추가해야 합니다. -
프로시저 호출:
Java 코드에서 프로시저를 호출하고 결과를 매핑합니다.
@SpringBootApplication
public class MybatisApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisApplication.class, args);
}
@Autowired
private EmployeeMapper employeeMapper;
public void callProcedure() {
int employeeId = 1;
Employee employee = employeeMapper.getEmployee(employeeId);
System.out.println("Employee ID: " + employee.getId());
System.out.println("Employee Name: " + employee.getName());
System.out.println("Department: " + employee.getDepartment());
}
}`
위의 예제에서는 MyBatis를 사용하여 MySQL 저장 프로시저를 호출하고 그 결과를 Employee
클래스로 매핑합니다. 프로시저 호출 시 parameterType
으로 매개변수를 설정하고, {call ...}
형식으로 프로시저를 호출합니다.
실제 프로시저의 내용과 데이터베이스 설정에 따라 설정이 다를 수 있으며, 사용하는 데이터베이스 종류에 따라 프로시저 호출 및 매핑 방법이 달라질 수 있습니다.