天天看點

idea中Mybatis使用generatorConfig.xml自動生成代碼

1、pom添加插件

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- mybatis-generator自動生成代碼插件 -->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
            </plugin>
        </plugins>
    </build>
           

2、 建立generatorConfig.xml 檔案(放在src/main/resources目錄下)

<?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>
        <!-- 引入配置檔案 -->  
        <properties resource="application.properties"/>

        <!-- 指定資料庫連接配接驅動jara位址 -->
        <classPathEntry
            location="${generator.location}" />

        <!-- 一個資料庫一個context --> 
        <context id="sqlserverTables">
            <!-- 生成的pojo,将implements Serializable -->
            <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>

            <!-- 注釋 -->
            <commentGenerator>
                <property name="suppressAllComments" value="true" /><!-- 是否取消注釋 -->
                <!-- <property name="suppressDate" value="true" />  是否生成注釋代時間戳 -->
            </commentGenerator>  

            <!-- 資料庫連結URL、使用者名、密碼 -->
            <jdbcConnection driverClass="${db.example.driver}"
                connectionURL="${db.example.url}" userId="${db.example.username}" 
                password="${db.example.password}">
            </jdbcConnection>

            <!-- 類型轉換 -->
            <javaTypeResolver>
            <!-- 預設false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer true,把JDBC DECIMAL 
                和 NUMERIC 類型解析為java.math.BigDecimal -->
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>

            <!-- 生成model模型,對應的包路徑,以及檔案存放路徑(targetProject),targetProject可以指定具體的路徑,如./src/main/java, 
                也可以使用“MAVEN”來自動生成,這樣生成的代碼會在target/generatord-source目錄下 -->
            <javaModelGenerator targetPackage="${generator.targetPackage}"
                targetProject="./src/main/java">
                <!-- 是否在目前路徑下新加一層schema,eg:fase路徑com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] --> 
                <property name="enableSubPackages" value="false" />
                <!-- 從資料庫傳回的值被清理前後的空格 -->
                <property name="trimStrings" value="true" />
            </javaModelGenerator>

            <!--對應的mapper.xml檔案 -->
            <sqlMapGenerator targetPackage="${generator.targetPackage}"
                targetProject="./src/main/java">
                <property name="enableSubPackages" value="false" />
            </sqlMapGenerator>

            <!-- 對應的Mapper接口類檔案 -->
            <javaClientGenerator type="XMLMAPPER"
                targetPackage="${generator.targetPackage}" targetProject="./src/main/java">
                <property name="enableSubPackages" value="false" />
            </javaClientGenerator>


            <!-- 列出要生成代碼的所有表,這裡配置的是不生成Example檔案 -->
            <!-- schema即為資料庫名 tableName為對應的資料庫表 domainObjectName是要生成的實體類 enable*ByExample   
                       是否生成 example類   -->  
            <table tableName="${gererator.tableName}" domainObjectName="${gererator.objectName}"
                schema="${gererator.schema}"
                enableCountByExample="false" enableUpdateByExample="false"
                enableDeleteByExample="false" enableSelectByExample="false"
                selectByExampleQueryId="false">
                <!-- 忽略列,不生成bean 字段 
                <ignoreColumn column="FRED" />-->   
                <!-- 指定列的java資料類型  
                <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />  -->
                <!-- 用于指定生成實體類時是否使用實際的列名作為實體類的屬性名。false是 Camel Case風格-->
                <property name="useActualColumnNames" value="false" />
            </table>
        </context>
    </generatorConfiguration>    
           

3、設定需要生成的表及建立目錄參數(application.properties放在src/main/resources目錄下)

db.example.type=oracle
db.example.driver=oracle.jdbc.driver.OracleDriver
db.example.url=jdbc:oracle:thin:@ip:port:sid
db.example.username=username
db.example.password=password

#MBGInfo
generator.location=D:/project/eas_std/BaseApp/lib/ojdbc14-10.2.0.5.jar
generator.targetPackage=com.zteict.example.menu
gererator.schema=fbp
gererator.tableName=fbp_menu
gererator.objectName=FbpMenu
           

4、項目右鍵-RUN AS-MAVEN BUILD..

goals輸入 mybatis-generator:generate

idea中Mybatis使用generatorConfig.xml自動生成代碼

繼續閱讀