Dev_Tool/Eclipse

[Eclipse] MyBatis Generator 플러그인

LeeDaniel 2021. 5. 6. 17:29

0. MyBatis Generator?

아래 공식페이지에도 설명되어있지만

마이바티스에 필요한 파일들을

자동으로 생성해주는 플러그인으로 보면된다

 

MyBatis Generator Core – Introduction to MyBatis Generator

Introduction to MyBatis Generator MyBatis Generator (MBG) is a code generator for MyBatis MyBatis. It will generate code for all versions of MyBatis. It will introspect a database table (or many tables) and will generate artifacts that can be used to acces

mybatis.org

 

MyBatis Generator 기능 설명

 

 

1. Help > Eclipse Marketplace... 클릭

 

Help > Eclipse Marketplace... 클릭

 


2-1. Eclipse Marketplace > mybatis 검색 > MyBatis Generator 1.4.0 Install 클릭

 

MyBatis Generator 1.4.0 Install 클릭

 

 

2-2. 라이센스 약관동의 후 Finish 버튼 클릭

 

동의후 Finish 클릭

 

 

2-3. 잠시 기다리면 아래창이 뜬다. Install anyway를 클릭

 

Install anyway 클릭

 

 

2-4. 설치가 끝난뒤 재시작을 묻는다. Restart Now 클릭해서 이클립스 재시작

 

Restart Now 클릭

 


3-1. MyBatis Generator 설정파일 생성하기

 

프로젝트 우클릭 -> New -> Other 클릭

 

 

3-2. MyBatis Generator Configuration File 선택후 Next 클릭

 

MyBatis Generator Configuration File 선택후 Next 클릭

 

 

3-3. Location은 프로젝트명, File name은 환경설정 파일명이다

값이 자동입력 되어있으므로 Finish 버튼을 눌러준다

 

Finish 버튼 클릭

 

 

3-4. generatorConfig.xml 파일 생성 완료

 

설정파일이 생성된것을 볼 수 있다. 생성은 끝났고 설정파일을 본인의 환경에 맞게 수정해야한다

 


4. generatorConfig.xml 작성하기

MyBatis Generator 설치까지는 간단한데

환경설정 작성이 어려운 부분이라고 생각한다

아래의 페이지에 친절하게 설명되어있다

MyBatis Generator Core – MyBatis Generator Quick Start Guide

MyBatis Generator Quick Start Guide MyBatis Generator (MBG) generates code in different styles depending on how it is configured. This is controlled by specifying the targetRuntime attribute on a configuration element. The table below summarizes the differ

mybatis.org

-DB세팅( 설치 및 테이블 생성 )

-마이바티스 세팅

까지 완료되어 있는 상태라면

위 페이지의 sample을 보고 따라해보면 될거같다

 

근데 문서의 sample을 내 환경에 맞게 작성한뒤

한번에 잘되면 좋을텐데

경험상 따라해도 한번에 안될때가 더 많다

그래서 실행성공한 코드를 공유한다

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="context1" targetRuntime="MyBatis3">
  
  	<property name="javaFileEncoding" value="UTF-8"/>
  
    <!-- 생성한 Mapper파일들을 명시 -->
	<plugin type="org.mybatis.generator.plugins.MapperConfigPlugin">
      <property name="fileName" value="SqlMapConfig"/>
      <property name="targetPackage" value="com.example.demo.gen.xml"/>
   	  <property name="targetProject" value="demo"/>
    </plugin>
    
    <!-- MySQL의 start와 limit을 사용하게 해줌 -->
    <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"/>
    
    <!-- 생성한 sql파일들을 명시 -->
    <!-- generator 1.4.0 버전, SqlMapConfigPlugin이 삭제 --> 
    <!-- <plugin type="org.mybatis.generator.plugins.SqlMapConfigPlugin">
        <property name="fileName" value="SqlMapConfig"/>
        <property name="targetProject" value="demo"/>
    </plugin>
     -->
    
    <!-- Model파일에 toString()을 추가해줌 -->
    <plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
    
    <!-- 기본적으로 Model생성시 생성되는 example파일의 이름을 지정 -->
    <plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
        <property name="searchString" value="Example$"/>
        <property name="replaceString" value="Condition"/>
    </plugin>
    
    <commentGenerator>
        <property name="suppressAllComments" value="false"/>
        <property name="suppressDate" value="true"/>
    </commentGenerator>
    
    <jdbcConnection connectionURL="jdbc:mysql://아이피:포트/데이터베이스?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;autoReconnectForPools=true&amp;serverTimezone=UTC" 
    				driverClass="com.mysql.jdbc.Driver"
    				userId="아이디"
    				password="비밀번호"/>

	<javaTypeResolver>
    	<property name="forceBigDecimals" value="false"/>
    </javaTypeResolver>

    <javaModelGenerator targetProject="demo" targetPackage="com.example.demo.gen.model">
    	<!-- 스키마별로 다른 패키지에 두기 위해서 설정한다. 파일들이 저장되는 패키지명이 schema명.targetPackage속성값 으로 설정 -->
    	<property name="enableSubPackages" value="true"/>
    	<!-- character 필드들에 대해서 trim을 실행할지 여부를 설정한다. 데이터베이스에서 varchar대신에 char을 사용한다면 유용할 수 있다 -->
        <property name="trimStrings" value="true"/>
    </javaModelGenerator>
    
	<sqlMapGenerator targetProject="demo" targetPackage="com.example.demo.gen.xml">
		<!-- 스키마별로 다른 패키지에 두기 위해서 설정한다. 파일들이 저장되는 패키지명이 schema명.targetPackage속성값 으로 설정 -->
		<property name="enableSubPackages" value="true"/>
	</sqlMapGenerator>
	    				
	 <!-- javaClientGenerator type
	       ANNOTATEDMAPPER : sql xml파일이 생성되지 않고 SqlBuilder를 사용해서 문자열로 처리한 SqlProvider클래스와 SqlProvider클래스를 어노테이션 사용해서 연결한 mapper 인터페이스를 생성한다.(mybatis 3.0.4 이상)
	       MIXEDMAPPER : ANNOTATEDMAPPER 방식과는 다르게 SqlProvider를 생성하지 않는다.
	                                    그래서 sql xml파일도 제대로 생성한다. mapper 인터페이스는 어노테이션과 xml 방식을 혼합해서 생성된다. 모든 dynamic sql은 xml방식으로 생성되고 그 나머지는 어노테이션 방식으로 생성된다.
	       XMLMAPPER : sql xml파일을 생성하고 그에 기반해서 mapper 인터페이스를 생성한다.
	  -->
    <javaClientGenerator targetProject="demo" targetPackage="com.example.demo.gen.mapper" type="XMLMAPPER">
    	<!-- 스키마별로 다른 패키지에 두기 위해서 설정한다. 파일들이 저장되는 패키지명이 schema명.targetPackage속성값 으로 설정 -->
    	<property name="enableSubPackages" value="true"/>
    </javaClientGenerator>
    
    <table schema="test" tableName="tb_brd" domainObjectName="Brd">
    	<property name="ignoreQualifiersAtRuntime" value="true"/>
        <generatedKey column="BRD_NO" sqlStatement="MySql" identity="true" type="post"/>
    </table>
    
  </context>
</generatorConfiguration>

 

위 코드는 구글링하면서 작성된 코드로

주석 설명은 틀렸을수도 있습니다

targetProject

targetPackage

jdbcConnection

table의 값들을

본인의 환경에 맞게 작성하면 정상 동작하는것을 확인했습니다


5-1. MyBatis Generator 실행하기

generatorConfig.xml 우클릭 -> Runs As -> Run MyBatis Generator 클릭

 

generatorConfig.xml 우클릭 -> Runs As -> Run MyBatis Generator 클릭

 

 

5-2. MyBatis Generator 빌드 성공

 

MyBatis Generator 실행 성공
Mapper, model, xml이 자동생성된것을 볼 수 있다

 

 

 

MyBatis Generator로 생성한 Mapper

 

 

 

MyBatis Generator로 생성한 Model

 

 

 

MyBatis Generator로 생성한 Mapper xml

 

반응형