1. 程式人生 > >使用mybatis 程式碼生成器生成基礎的mapper ,model

使用mybatis 程式碼生成器生成基礎的mapper ,model

程式碼生成器是由mybatis團隊開發提供的, 程式碼生產器通過配置可以生成不同型別的程式碼,程式碼包含了資料庫表對應的實體類,Mapper 介面類 ,mapper xml 檔案和example物件等,這些程式碼檔案幾乎包含了全部的單表操作。 當然對於聯表操作,還是需要自己書寫SQL 的

mybatis 程式碼生成器主要在於XML 的配置,下面是關於XML 配置的詳解

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 通過屬性location 指定資料庫驅動的路徑-->
    <classPathEntry location="D:/manualJar/ojdbc7.jar"/>
<!--context 標籤用於指定生成一組物件的環境,例如指定要連線的資料庫,要生產物件的型別和要處理的資料庫中的表 ,具體屬性如下
id 是必填屬性 ,並且是唯一的  
targetRuntime 屬性則是用於指定生產的程式碼的執行時環境 支援以下可選值	
MyBatis3 預設值
MyBatis3Simple 該方式不會生成於Example相關的方法
 -->
    <context id="testTables" targetRuntime="MyBatis3">
       
       <!-- commentGenerator 標籤主要用來配置如何生成註釋資訊 可以通過property屬性進行配置
suppressAllComments :阻止生成註釋,預設為false 
suppressDate  : 阻止生成的註釋包含時間戳 預設為false 
addRemarkComments  註釋是否新增資料庫表的備註資訊,預設為false
一般情況下,由於生成的註釋沒有任何價值,而時間戳每次生成都會不一樣,所以推薦遮蔽註釋資訊
當然也可以自己實現註釋形式  通過繼承DefaultCommentGenerator 實現自定義的註釋格式 通過   <commentGenerator type="">引入自定義的註釋生成類
 -->
   <commentGenerator>
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!--用於只當需要連線的資料庫資訊,該標籤必選,並且只能有一個 								  			  資料庫連線的資訊:驅動類、連線地址、使用者名稱、密碼 -->
        <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
           connectionURL="jdbc:oracle:thin:@//127.0.0.1:1521/orclpdb"
                        userId="user"
                        password="password">
        </jdbcConnection>

        <!--javaTypeResolver 標籤用來配置JDBC 型別和Java 型別的轉換
forceBigDecimals 預設false,該property主要用來把JDBC DECIMAL 和 NUMERIC 型別解析為 Integer,為 true時把JDBC DECIMAL   NUMERIC 型別解析為java.math.BigDecimal  -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- javaModelGenerator  用來控制生成的實體類
targetPackage 生成實體類存放的包名
targetProject:指定目標專案路徑 可以使用相對路徑或絕對路徑 -->
        <javaModelGenerator targetPackage="com.commons.model"
                            targetProject="src\main\java">
            <!-- enableSubPackages:是否讓schema作為包的字尾 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 判斷是否對資料庫查詢結果進行trim 判斷  如果為true 從資料庫返回的值被清理前後的空格 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- sqlMapGenerator  標籤用於配置SQL 對映生成器(mapper.xml) 的屬性 
targetPackage	生成sql對映檔案存放的包名。
 targetProject:指定目標專案路徑 可以使用相對路徑或絕對路徑 -->
        <sqlMapGenerator targetPackage="resources\mapper"
                         targetProject="src\main">
            <!-- enableSubPackages:是否讓schema作為包的字尾 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- javaClientGenerator  用於配置Java客戶端生成器(mapper 介面)的屬性 該標籤有三個屬性
type: 用於選擇客戶端程式碼生成器 預設提供了以下幾種方式
ANNOTATENMAPPER :基於註解的Mapper 介面,不會有對應的XML 對映檔案
MIXEDMAPPER:XML 和註解的混合形式
XMLMAPPER :所有的方法都在XML 中,介面的呼叫依賴XML檔案 (推薦使用該方式)
 targetPackage:mapper介面存放的包名
targetProject:指定目標專案路徑 可以使用相對路徑或絕對路徑 -->
        <javaClientGenerator type="XMLMAPPER"
                        targetPackage="com.vclog.persistence.mapper"
                             targetProject="src\main\java">
            <!-- enableSubPackages:是否讓schema作為包的字尾 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>
       
 <!-- table  標籤是最重要的一個標籤,該標籤用於配置需要通過內省資料庫的表,只有在table 中配置過的表,才能經過上述其他配置生成最終的程式碼  
其中 tableName 是一個必選的屬性, 該屬性指定要生成的表明,可以使用SQL 萬用字元匹配多個表 (  例如  <table tableName="%"></table>)
table 標籤中的屬性
domainObjectName : 指定生成物件的基本名稱,如果沒有指定,則自動根據表明生成

-->
        <table tableName="T_Table_Name" domainObjectName="Name"></table>
    </context>
</generatorConfiguration>

使用maven plugin 執行生成 程式碼
1.新增依賴
2. 對pom.xml 進行外掛配置

<build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
<!--                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>6.0.5</version>
                    </dependency>
                </dependencies>-->
            </plugin>

        </plugins>
    </build>

需要說明的一點,由於在配置檔案中已經指定了本地的jdbc 資料庫驅動的jar地址,所以在外掛配置中,將資料庫依賴給註釋了 ,實際上也是可以在外掛配置中指定資料依賴來實現驅動的指定
配置好外掛後 使用maven 命令:
mvn mybatis-generator:generate
git mybatis 程式碼生成工具生成程式碼