본문 바로가기
Mybatis/MyBatis 소개 및 환경 설정

MyBatis 설정 파일 구성 (mybatis-config.xml)

by DEVLIB 2025. 4. 16.
728x90

mybatis-config.xml 개요

  • 위치: 일반적으로 src/main/resources 아래에 위치
  • 역할: 전역 설정(매핑 방식, 캐시, 로그, 네이밍 전략 등)을 관리
  • 주의: Spring Boot 환경에서는 application.yml이 대부분의 설정을 대체하지만, 복잡한 설정이 필요한 경우 여전히 mybatis-config.xml을 병행 사용합니다.

기본 구조 예시

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

    <!-- 1. 설정: 캐시, 로깅 등 -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>

    <!-- 2. 타입 별칭 등록 -->
    <typeAliases>
        <package name="com.example.project.domain"/>
    </typeAliases>

    <!-- 3. 매퍼 XML 파일 등록 -->
    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
        <!-- 또는 package로 묶어서 등록 -->
        <!-- <package name="com.example.project.mapper" /> -->
    </mappers>

</configuration>

주요 요소 설명

1. <settings>

  • MyBatis의 핵심 동작을 설정
xml
복사편집
<setting name="mapUnderscoreToCamelCase" value="true" />

 

→ DB의 user_name → Java의 userName으로 자동 매핑

<setting name="logImpl" value="STDOUT_LOGGING" />

 

→ 콘솔에 SQL 로그 출력. 다른 옵션: SLF4J, LOG4J, LOG4J2


2. <typeAliases>

  • resultType="com.example.project.domain.User" → resultType="User"로 간단하게 작성 가능
<typeAliases>
  <package name="com.example.project.domain"/>
</typeAliases>

3. <mappers>

  • SQL이 담긴 Mapper XML 파일 등록
<mapper resource="mappers/UserMapper.xml" />

 

또는 디렉토리 전체를 등록:

<package name="com.example.project.mapper"/>

고급 설정 예시

전역 캐시 설정

<configuration>
  <settings>
    <setting name="cacheEnabled" value="true"/>
  </settings>
</configuration>

기본 실행 전략 설정 (예: reuse or batch)

<settings>
  <setting name="defaultExecutorType" value="REUSE"/>
</settings>

적용 방법 (Spring 환경)

application.yml 또는 .properties에 아래와 같이 등록:

mybatis:
  config-location: classpath:mybatis-config.xml

체크리스트

항목
XML 헤더와 DTD 정확히 작성했는가?
설정 파일 위치가 resources 폴더인가?
typeAliases, mappers가 정상 등록됐는가?
application.yml에서 경로가 올바르게 지정됐는가?
LIST