Mybatis/성능 및 유지보수 팁
MyBatis Generator 소개
by DEVLIB
2025. 4. 18.
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 기본 사용 흐름
- Generator 설정 파일(XML) 작성
- DB 연결 설정 (JDBC 드라이버 필요)
- 테이블 및 패키지 매핑 정의
- Generator 실행
- 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>
실행 방법
- 터미널이나 IDE에서 MBG 실행
- Maven 플러그인 사용 가능
- 별도 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와 함께 통합 사용