Tools mybatis generator 사용하기

황제낙엽 2010.10.21 06:27 조회 수 : 398 추천:37

sitelink1  
sitelink2  
extra_vars5  
extra_vars6  
http://allinux.thoth.kr/?mid=blog&document_srl=5047397

* mybatis generator 란?

해당 db의 테이블들을 기준으로 하여 persistence 레이어에 필요한 기본적인 object와 맵핑파일을 생성해주는 툴이다.

vo(model), mapper(dao), xml(query)을 생성해준다.


* build(첨부파일로 mybatis-generator-core-1.3.0-SNAPSHOT.jar 와 xml 소스를 등록했으니 build가 어려운 분들은 첨부된 파일을 사용하면 되겠다.)

전신인 ibatis가 mybatis로 개명을 했고 그에 따라 ibator라로 있던 생성툴이 mybatis generator로 바뀐 것 이다.

즉 ibator 1.2 버전 다음이 mybatis generator 이며 버전도 1.3 이다.

http://code.google.com/p/mybatis/wiki/Generator 가 공식 사이트이나 downloads를 찾아봐도 바이너리는 찾을 수 없을 것이다.

(아마도 정식버전이 아니라서 그런지는 모르겠다.)

소스 저장소에서 소스를 받아 빌딩을 해줘야 한다.

소스 저장소는 http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/core/ 이다.

svn이므로 적당한 svn 클라이언트를 사용하여 checkout해준다. (서브버전 사용법은 패스)

checkout을 완료하면 pom.xml 이 보일것인데 maven으로 빌딩과 테스팅까지 해볼 수 있다.(maven 사용법은 패스)

(maven이 설치되어 있다면 pom.xml 이 있는 디렉토리에서 mvn package 해주면 된다.)


우리에게 필요한 파일은 mybatis-generator-coretargetmybatis-generator-core-1.3.0-SNAPSHOT.jar 라는 실행형 jar파일 1개이다.

위의 파일을 편한 작업공간 디렉토리로 이동한다.(필자는 c:myworkspace로 정했다.)


* xml 작성

이제 핵심인 설정파일을 작성해야 한다.

01.<?xml version="1.0" encoding="UTF-8"?>
02.<!DOCTYPE generatorConfiguration PUBLIC
03. "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
05.  
06.<generatorConfiguration>
07.    <context id="yhjung" targetRuntime="MyBatis3" defaultModelType="flat">
08.        <property name="suppressTypeWarnings" value="true" /> 
09.          
10.        <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" />
11.          
12.        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
13.     connectionURL="jdbc:oracle:thin:@192.168.0.2:1521:ora11" userId="scott" password="해당비밀번호" >
14.            
15.        </jdbcConnection>
16.  
17.        <javaModelGenerator targetPackage="com.yhjung.test.model" targetProject="yhjung">
18.          <property name="enableSubPackages" value="true" />
19.          <property name="trimStrings" value="true" />
20.        </javaModelGenerator>
21.      
22.        <sqlMapGenerator targetPackage="com.yhjung.test.xml"  targetProject="yhjung">
23.          <property name="enableSubPackages" value="true" />
24.        </sqlMapGenerator>
25.      
26.        <daoGenerator type="MAPPER" targetPackage="com.yhjung.test.dao"  targetProject="yhjung">
27.          <property name="enableSubPackages" value="true" />
28.        </daoGenerator>
29.      
30.        <table tableName="Emp" />
31.        <table tableName="Dept" />
32.    </context>
33.</generatorConfiguration>


context 앨리먼트는 프로젝트 단위이다. 여러 context 문맥을 작성한뒤 선택적으로 적용할 수 있다.

id 가 yhjung이며 targetRuntime 이 mybatis3 라는 의미다. (ibatis2 와 mybatis3은 많이 다르다!)


jdbcConnection 항목은 해당툴이 데이터베이스에 접근하여 클래스 정보를 읽어야 함으로 핵심이 되는 항목이다.

ibator 1.2 에서는 classEntry 라는 엘리먼트가 가능했는데 이번버전에서는 오류가 발생했다.

(classEntry는 명시적으로 jdbc드라이버를 설정할 수 있는 기능을 제공하는 엘리먼트이다)

그런 문제로 인해 oracle jdbc driver 을 jre의 ext디렉토리(C:Program FilesJavajre6libext)에 넣어버렸다^^(단순히 classpath을 잡아주면 되는 문제이다. 기본적으로 ext디렉로리는 classpath에 등록되어 있다.)


javaModelGenerator항목은 모델이 되는 Value Object 설정이다.

targetPackage 속성은 모델이 생성될 팩키지 공간을 설정한다.

targetProject 속성은 루트 디렉토리라고 보면 된다.


sqlMapGenerator 와 daoGenerator 도 javaModelGenerator 와 같다.


마지막으로 table 엘리먼트를 사용하여 생성할 테이블 이름을 지정한다.

* 실행

c:myworkspace 에 mybatis-generator-core-1.3.0-SNAPSHOT.jar 와 xml 을 저장한 파일(yhjung-generator.xml)을 복사했다.

myworkspace 디릭토리 아래에 yhjung 이라는 디렉토리를 생성했다.

자 이제 실행해보자.

C:myworkspace>java -jar mybatis-generator-core-1.3.0-SNAPSHOT.jar -configfile yhjung-generator.xml -contextids yhjung

Ibator finshed successfully.