blog

마이바티스 코드 생성 시리즈 - mybatis-generator-gui 오픈소스 프로젝트 소개

머리말 소프트웨어 개발 분야에서 자동화 도구를 사용하면 생산성을 크게 향상시킬 수 있습니다. 특히 데이터베이스 작업에서 SQL 문과 엔티티 클래스, 매핑 파일 등을 수동으로 작성하...

Oct 20, 2025 · 5 min. read
シェア

서문

소프트웨어 개발 분야에서 자동화 도구를 사용하면 생산성을 크게 향상시킬 수 있습니다. 특히 데이터베이스 작업에서 SQL 문과 엔티티 클래스, 매핑 파일 등을 수동으로 작성하는 것은 시간이 많이 걸릴 뿐만 아니라 오류가 발생하기 쉽습니다. 널리 사용되는 지속성 계층 프레임워크인 myBatis에는 이러한 지루한 코드 생성을 자동화하는 데 도움이 되는 코드 생성기인 mybatis-generator가 있습니다. 그러나 mybatis-generator는 기본적으로 MySQL 데이터베이스만 지원하며 다른 데이터베이스에 대한 지원은 완벽하지 않습니다. 따라서 이 글에서는 기존 오픈 소스 프로젝트인 mybatis-generator-gui를 분석하여 여러 데이터베이스를 지원하는 MyBatis 코드 생성기를 구현하는 방법에 대해 알아보겠습니다.

이 블로그 시리즈는 다음 섹션으로 나뉩니다:

  1. mybatis-generator-gui 소개: 먼저 시각적 코드 생성을 위해 기존 오픈소스 프로젝트인 mybatis-generator-gui를 사용하는 방법을 소개합니다. 프로젝트를 구성하는 방법, 데이터베이스를 선택하는 방법, 코드를 생성하는 과정을 자세히 설명합니다.
  2. mybatis 코드 생성 원리: 이 섹션에서는 mybatis-generator의 내부 작동을 자세히 살펴보고 코드 생성 원리를 살펴봅니다. 구성 파일을 파싱하는 과정과 구성 정보를 기반으로 엔티티 클래스, 매핑 파일 및 XML 구성 파일을 생성하는 방법을 분석합니다.
  3. 사용자 정의 코드 생성기 구현: 앞의 두 부분을 기반으로 자체 코드 생성기를 구현합니다. mybatis-generator의 핵심 코드는 다른 데이터베이스를 지원하도록 재작성될 것입니다. 동시에 생성된 코드는 프로젝트 요구 사항에 더 잘 맞도록 최적화됩니다.

이 블로그 시리즈를 통해 마이바티스 코드 생성기의 사용법과 원리를 익히고 필요에 따라 코드 생성기를 커스터마이징할 수 있습니다. 마이바티스 초보자이든 어느 정도 경험이 있는 개발자이든 학습과 작업에 도움이 될 것이라고 확신합니다. 함께 이 여정을 시작하세요!

본문(각주와 반대되는 각주)

mybatis-generator-gui오픈 소스 주소

링크: GitHub - zouzg/mybatis-generator-gui: 코드를 더 쉽고 빠르게 생성할 수 있는 mybatis-generator 인터페이스 도구!

실행

제가 주로 사용하는 두 가지 방법: zip 파일 다운로드 또는 https 클론

여기에서 zip 파일을 다운로드하고 압축을 풉니다.

com.zzg.mybatis.generator.MainUI 클래스를 찾아 실행합니다.

구성

하지만 매퍼는 삽입, 일반 업데이트, 삭제, 선택만 가능합니다!

그러면 생성된 클래스 파일에 클래스 주석이 누락됩니다!

사용

새 maven 프로젝트를 만들고 생성된 매퍼와 해당 xml 및 모델 파일을 바로 사용할 수 있는지 확인합니다.

XML 바인딩 매퍼 파일 정규화된 클래스 이름을 직접 사용할 수 있도록 수정하기만 하면 됩니다;

<project xmlns="http://..org/POM/..0" xmlns:xsi="http://..org/2100"/XMLSchema-instance"
 xsi:schemaLocation="http://..org/POM/..0 http://..org/xsd/maven-...xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>org.example</groupId>
 <artifactId>code-generate-basic-config</artifactId>
 <version>1.0-SNAPSHOT</version>
 <packaging>jar</packaging>
 <name>code-generate-basic-config</name>
 <url>http://..org</url>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>
 <dependencies>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
 <version>2.1.1.RELEASE</version>
 </dependency>
 <!-- mysql -->
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>8.0.19</version>
 </dependency>
 <!-- mybatisplus -->
 <dependency>
 <groupId>com.baomidou</groupId>
 <artifactId>mybatis-plus-boot-starter</artifactId>
 <version>3.1.0</version>
 </dependency>
 <!-- 단위 테스트 --.>
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>4.12</version>
 <scope>test</scope>
 </dependency>
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-test</artifactId>
 <scope>test</scope>
 <version>2.1.1.RELEASE</version>
 </dependency>
 <dependency>
 <groupId>org.projectlombok</groupId>
 <artifactId>lombok</artifactId>
 <version>1.18.20</version>
 </dependency>
 </dependencies>
 <build>
 <plugins>
 <plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 <configuration>
 <addResources>true</addResources>
 </configuration>
 <version>2.1.1.RELEASE</version>
 </plugin>
 </plugins>
 </build>
</project>

구성 파일 application.yaml은 다음과 같습니다:

mybatis:
 config-location: classpath:mybatis.cfg.xml # mybatis기본 구성 파일의 경로
 type-aliases-package: com.demo.drools.entity # 패키지의 모든 연산 클래스에 대한 별칭을 정의합니다.
 mapper-locations: # 모든 매퍼 매핑 파일
 - classpath:mapper/*.xml
spring: #springboot 
 datasource: #데이터 소스 정의하기
 #.1로컬 테스트 IP의 경우 3306은 mysql 포트 번호입니다. 서버 타임존은 시간대의 정의이므로 복사하기 만하면 mysql 높은 버전에서 이러한 것들을 정의해야합니다!
 #useSSL또한 일부 상위 버전의 mysql은 SSL 연결이 있는지 물어볼 필요가 있습니다.
 url: jdbc:mysql://.1:3306/XXXX?serverTimezone=GMT%2B8&useSSL=FALSE&characterEncoding=utf-8
 username: XXXX #데이터베이스 사용자 이름, 루트는 관리자
 password: XXXX #이 데이터베이스 사용자의 비밀번호
server:
 port: 8080

요약

mybatis-generator-gui는 매퍼, XML 및 모델 세 가지 유형의 생성 파일을 생성하는 것은 비교적 표준이며 일상적인 개발의 기본 요구 사항을 충족하기 위해 개인 프로젝트에 직접 복사하여 사용할 수 있지만 팀 개발 사양의 요구 사항에는 미치지 못합니다;

개발팀의 사용 관점에서 보면 팀 사양에 맞게 조정해야 하고, 생성된 파일에는 클래스 파일 주석이 없으며, 팀이 데이터베이스를 사용할 수 있도록 지원되지 않습니다;

mybatis-generator-gui는 기본 선택, 업데이트 및 삭제 기능이 있는 매퍼 파일을 생성하는 예제 구성의 선택적 사용도 제공하지만 기본적으로 예제 필드, 중복 및 필요하지 않은 @Param 어노테이션이 있습니다!

Read next

장갑의 도커 여행: cgroups 살펴보기

목요일에 오신 것을 환영합니다!\n잔잔한 BGM과 함께 오늘의 주제인 도커 cgroups를 시작하겠습니다!\n이전 Docker\n\n주인공 소개\n샤오 리 - 회사의 기술 이사, 젊은 나이, 재정적 자유, 샤오미 SU7 운전\ncgroups\n\ncgroups는

Oct 20, 2025 · 3 min read