1. 程式人生 > >0101_利用mybatis-generator自動生成程式碼

0101_利用mybatis-generator自動生成程式碼

利用mybatis-generator自動生成程式碼

mybatis-generator有三種用法:命令列、eclipse外掛、maven外掛。個人覺得maven外掛最方便,可以在eclipse/intellij idea等ide上可以通用。

下面是從官網上的截圖:(不過官網www.mybatis.org 最近一段時間,好象已經掛了)

一、在pom.xml中新增plugin

按 Ctrl+C 複製程式碼

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
    <configuration>
        <configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
        <verbose>true</verbose>
        <overwrite>true</overwrite>
    </configuration>
    <executions>
        <execution>
            <id>Generate MyBatis Artifacts</id>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>
    </dependencies>
</plugin>

按 Ctrl+C 複製程式碼

其中generatorConfig.xml的位置,大家根據實際情況自行調整

二、generatorConfig.xml配置檔案

按 Ctrl+C 複製程式碼

<?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>
    <classPathEntry
            location="C:/Oracle/Middleware/wlserver_10.3/server/lib/ojdbc6.jar"/>
    <context id="my" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="false"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
                        connectionURL="jdbc:oracle:thin:@172.20.16.***:1521:CARGO" userId="***"
                        password="***"/>

        <javaModelGenerator targetPackage="ctas.test.entity"
                            targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="ctas.test.entity.xml"
                         targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/java">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <javaClientGenerator targetPackage="ctas.test.mapper"
                             targetProject="D:/yangjm/Code/CTAS/JAVAEE/CTAS2CCSP/src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--<table tableName="T_FEE_AGTBILL" domainObjectName="FeeAgentBill"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false"/>-->

        <table tableName="CTAS_FEE_BASE" domainObjectName="FeeBase"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false">
            <!--<columnRenamingRule searchString="^D_"
                                replaceString=""/>-->
        </table>

    </context>
</generatorConfiguration>

按 Ctrl+C 複製程式碼

幾個要點:
a) 因為生成過程中需要連線db,所以第3行指定了驅動jar包的位置

b) 15-17行為連線字串

c) 19-33行指定生成“entity實體類、mybatis對映xml檔案、mapper介面”的具體位置

d) 40-46行為具體要生成的表,如果有多個表,複製這一段,改下表名即可

 

三、使用方式

mvn mybatis-generator:generate

如果是在intellij 環境,直接滑鼠點選即可

 

最後給出目錄結構圖:

最後給一些小技巧:

a) 建表時,欄位名稱建議用"_"分隔多個單詞,比如:AWB_NO、REC_ID...,這樣生成的entity,屬性名稱就會變成漂亮的駝峰命名,即:awbNo、recId

b)oracle中,數值形的欄位,如果指定精度,比如Number(12,2),預設生成entity屬性是BigDecimal型 ,如果不指定精度,比如:Number(9),指預設生成的是Long型

c)oracle中的nvarchar/nvarchar2,mybatis-generator會識別成Object型,建議不要用nvarchar2,改用varchar2