MyBatis - Java Bean 방식을 통해 전역설정 후 활용

TopOfTheHead·2026년 4월 21일

MyBatis / JPA

목록 보기
3/10

Java Bean 방식을 사용하여 Java에서 MyBatis전역설정을 수행 및 SQL 실행하기
。기존의 전역설정파일( mybatis-config.xml )을 작성하는 방식을 Java설정 클래스Java Bean으로서 생성하여 수행
<Configuration> / <Environment> / <TransactionManager> / <DataSource> 등의 태그Java Bean으로 생성

Mapper 인터페이스 작성
Mapper.xml파일SQL매핑태그바인딩추상메서드를 정의

Mapper.xml 파일<mapper namespace="인터페이스명"> 등록 시 MyBatis에 의해 해당 Mapper 인터페이스를 자동으로 스캔하여 가져와서 등록

public interface TestMapperV2 {
	Integer test();
}

Mapper.xml 파일 작성
Mapper Interface추상메서드바인딩 되어 실제 실행될 SQL매핑태그를 작성

<select>id="" 속성인터페이스 추상메서드 명과 동일하게 설정
▶ 설정 시 인터페이스 추상메서드SQL매핑태그는 서로 바인딩되어 연동되므로, 추상메서드 호출 시 SQL매핑태그에 정의된 SQL문이 실행

。반드시 Mapper 인터페이스미러링되는 resources 이하 디렉토리에서 Mapper 인터페이스와 동일한 파일명으로 등록해야한다.
ex ) src/main/java/mapper/TestMapperV2.Interface인 경우 src/main/resources/mapper/TestMapperV2.xml로 설정

<mapper>namespace = "" 속성src/main/java 기준 절대경로로 입력
▶ 등록 시 MyBatisMapper 인터페이스를 자동으로 스캔하여 식별

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.TestMapperV2">
    <select id="test" resultType="int">
        -- SQL 구문 입력
        SELECT 1
    </select>
</mapper>

Java 코드 작성
<configuration> / <environment> / <transactionManager> / <dataSource> 등의 태그들을 Java Bean으로 생성

DataSource, TransactionManager -> Environment -> Configuration 순서로 Java Bean 생성하여 Configuration 객체 생성 후 SqlSessionFactory 객체 생성 및 SqlSession 객체 활용

public class SessionFactory {
	private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
	private static final String URL = "jdbc:mysql://localhost:3304/mybatis_shop";
	private static final String USER = "root";
	private static final String PASSWORD = "wjd747";
	public static void main(String[] args) {
		// <DataSource>에 해당하는 Java Bean 생성
  		// MyBatis의 ConnectionPool을 활용
		PooledDataSource pooledDataSource = new PooledDataSource();
		pooledDataSource.setDriver(DRIVER);
		pooledDataSource.setUrl(URL);
		pooledDataSource.setUsername(USER);
		pooledDataSource.setPassword(PASSWORD);
		// <TransactionManager> 에 해당하는 Java Bean 생성
		JdbcTransactionFactory jdbcTransactionFactory = new JdbcTransactionFactory();
		// <Environment>에 해당하는 Java Bean 생성 및 id = "exp3"으로 등록
		Environment exp3 = new Environment(
			"exp3",
			jdbcTransactionFactory,
			pooledDataSource
		);
  		// <Configuration>에 해당하는 Java Bean 생성
		Configuration configuration = new Configuration(exp3);
		configuration.addMappers("mapper");
		SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
		// 컨테이너 객체 생성
		SqlSessionFactory build = sqlSessionFactoryBuilder.build(configuration);
		try(SqlSession sqlSession = build.openSession()){
			TestMapperV2 mapper = sqlSession.getMapper(TestMapperV2.class);
			Integer result = mapper.test();
			System.out.println("result = " + result);
		}catch(Exception e){
			System.out.println(e.getMessage());
		}
	}
}
profile
공부기록 블로그

0개의 댓글