Spring

스프링 - Mybatis 연동

마루설아 2025. 5. 20. 20:11

Mybatis

Java Spring에서 SQL을 더 쉽게 다룰 수 있도록 해주는 프레임워크

자동으로 DB close()를 해주며 어노테이션과 XML을 이용해 SQL을 구성할 수 있다.

 

 

pom.xml에 Mybatis 관련 라이브러리 추가 후 Maven Update

...

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.2</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>${org.springframework-version}</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>

...

 

 

 

root-context.xml에 Mybatis 연동 내용 추가

여기서 SQLSessionFactory는 SQL 세션을 만들고 DB Connection, SQL 등 전달, 결과 리턴을 해준다.

...

<!-- Mybatis 연동 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
</bean>

...

 

 

이전 게시글에서 작성했던 HikariCP 테스트 클래스에 아래 내용을 추가하여 수정한다. (최종 클래스 파일)

 

SqlSession, SqlSessionFactory를 추가로 임포트 해줘야하며

SqlSessionFactory 변수 및 테스트 메소드를 작성해야 한다.

package com.myspring.persistence;

import static org.junit.Assert.fail;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.sql.Connection;

import javax.sql.DataSource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import lombok.Setter;
import lombok.extern.log4j.Log4j;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class DataSourceTests {
	@Setter(onMethod_ = { @Autowired })
	private DataSource dataSource;
	
	@Setter(onMethod_ = { @Autowired })
	private SqlSessionFactory sqlSessionFactory;
	
	@Test
	public void testMyBatis() {
		try (SqlSession session = sqlSessionFactory.openSession();
				Connection con = session.getConnection();
		) {
			log.info(session);
			log.info(con);
		} catch (Exception e) {
			fail(e.getMessage());
		}
	}
	
	@Test
	public void testConnection() {
		
		try (Connection con = dataSource.getConnection()){
			log.info(con);
			
		} catch(Exception e) {
			fail(e.getMessage());
		}
	}
}

 

 

JUnit Test 시 아래 유사한 콘솔 로그가 뜬다면 정상