본문 바로가기
Mybatis/성능 및 유지보수 팁

MyBatis Generator 소개

by DEVLIB 2025. 4. 18.
728x90

MyBatis Generator(MBG)란?

MyBatis Generator는 데이터베이스 테이블 구조를 기반으로
Model 클래스
Mapper 인터페이스
Mapper XML 파일
자동으로 생성해주는 도구입니다.

즉, 반복적이고 귀찮은 작업(DTO, CRUD Mapper 작성)을 대신해주는 자동화 툴이에요.


MBG의 주요 기능

기능 설명
모델 클래스 자동 생성 테이블 컬럼과 매핑되는 Java 클래스 생성
Mapper 인터페이스 생성 CRUD 메서드 자동 생성
Mapper XML 파일 생성 select, insert, update, delete SQL 작성
다양한 DB 지원 MySQL, Oracle, PostgreSQL 등
동적 SQL 일부 지원 예: 조건부 검색, Primary Key 조회

MBG 기본 사용 흐름

  1. Generator 설정 파일(XML) 작성
  2. DB 연결 설정 (JDBC 드라이버 필요)
  3. 테이블 및 패키지 매핑 정의
  4. Generator 실행
  5. Model, Mapper, XML 파일 자동 생성

간단한 설정 예시 (generatorConfig.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

  <context id="MySQLTables" targetRuntime="MyBatis3">

    <!-- DB 연결 -->
    <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                    connectionURL="jdbc:mysql://localhost:3306/mydb"
                    userId="root"
                    password="password"/>

    <!-- 생성할 모델 패키지 -->
    <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/>

    <!-- 생성할 매퍼 인터페이스 패키지 -->
    <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.mapper" targetProject="src/main/java"/>

    <!-- 생성할 매퍼 XML 파일 위치 -->
    <sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources"/>

    <!-- 테이블 지정 -->
    <table tableName="users" domainObjectName="User"/>
    <table tableName="posts" domainObjectName="Post"/>

  </context>

</generatorConfiguration>

실행 방법

  1. 터미널이나 IDE에서 MBG 실행
  2. Maven 플러그인 사용 가능
  3. 별도 Java 코드로 Generator 실행하는 방법도 존재

Maven 플러그인 예시

<plugin>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-maven-plugin</artifactId>
  <version>1.4.1</version>
  <configuration>
    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
  </configuration>
  <dependencies>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <version>8.0.33</version>
    </dependency>
  </dependencies>
</plugin>

MBG 사용 시 주의사항

주의 포인트 설명
파일 덮어쓰기 주의 매번 생성 시 기존 파일을 덮어쓸 수 있음
커스텀 메서드 작성 시 분리 기본 CRUD 외 커스텀 기능은 별도 Mapper 분리 추천
Table/Column 주석 관리 DB 테이블 컬럼 주석을 Model에 반영 가능 설정 존재

MBG를 쓰면 좋은 상황

상황 이유
테이블이 수십 개 이상 존재할 때 생산성 극대화
CRUD 기본 작업이 많을 때 코드 작성 시간 절감
DB 구조가 자주 변할 때 변경 사항 반영 쉬움

마무리 요약

항목 내용
MBG란? DB 테이블 기반 자동 코드 생성 도구
생성하는 것 Model, Mapper 인터페이스, Mapper XML
장점 생산성 향상, 코드 일관성 확보
단점 복잡한 커스텀 쿼리는 수동 작성 필요

확장 활용

  • Swagger와 연계하여 API 문서 자동화
  • DTO/VO 클래스를 MBG Model과 별도로 설계
  • Spring Boot Starter와 함께 통합 사용
LIST

'Mybatis > 성능 및 유지보수 팁' 카테고리의 다른 글

Mapper 관리 전략 (XML vs 주석 기반)  (0) 2025.04.18
로그 설정 및 SQL 디버깅  (0) 2025.04.18
N+1 문제 해결  (1) 2025.04.17