1. 程式人生 > >mybatis generator 配置檔案解析

mybatis generator 配置檔案解析

這是mybatis3 generator 配置檔案,包括了主要的配置引數,具體的配置說明請在文章結尾處下載 完整的配置應用。 

應用是基於myeclipse的java應用。 

文章中的MBG指的就是MybatisGenerator這個工具。 



<?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 > 
<!-- 配置屬性檔案 用來在配置檔案中引入變數 El表示式 --> 
<!-- 如果是用cmd方式執行 這裡應該寫url方式寫全路徑 因為找不到classpath 對於resource來說 --> 
<properties url="file:///D:/workspaces/mybatisGen/bin/generatorConfig.properties"/> 
<!-- 設定sqlServer驅動路徑 --> 
<classPathEntry location="${sqljdbcPath}" /> 
<!-- 此處指定生成針對MyBatis3的DAO--> 
<!--  
id: 必須配置。這個上下文的惟一識別符號。該值將被用在一些錯誤訊息。 

defaultModelType:用來定義生成模型型別策略。 
1.conditional 預設策略,為每個表生成一個Model class 
2.flat:將所有的表中生成一個Model class,即這個類將儲存所有表中欄位 
3.hierarchical :如果表有一個主鍵,該模型將生成一個主鍵類,另一個類,用於容納任何BLOB列在表中,和另一個類,用於容納其餘的欄位。這個是一個適當的繼承類之間的關係。 

targetRuntime:此屬性用於指定執行時目標生成的程式碼。 
1.MyBatis3 預設值 將生成物件相容MyBatis版本3.0和更高版本,和JSE 5.0和更高版本 
(例如Java模型和mapper介面將使用泛型型別)。 
“by example”方法在這些生成的物件支援幾乎無限的動態where子句。 
此外,Java物件與這些生成器生成支援許多JSE 5.0特性包括引數化的型別和註釋。 

2.Ibatis2Java2 
3.Ibatis2Java5 

--> 
  <context id="context1"  targetRuntime="MyBatis3" defaultModelType="conditional"> 

<!-- 

<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin" /> 
  <!-- 用來生成註釋 
   1. suppressAllComments 預設是false  此屬性用於指定在生成的程式碼是否將包括任何註釋。如果設定為true 則不生成註釋 
   2.  suppressDate 預設是false       此屬性用於指定在生成的註釋是否將包括MBG代時間戳。 
  --> 
  <commentGenerator> 
   <property name="suppressAllComments" value="true" /> 
  </commentGenerator> 
  <!-- jdbc連線資訊 --> 
  <!-- 
   jdbcConnection  必須配置 用來連線資料庫的 無需解釋 
   --> 
    <jdbcConnection driverClass="${driverClass}"  
    connectionURL="${connectionURL}" 
    userId="${userId}" password="${password}" /> 
    <!-- java型別解析器 可選配置 --> 
    <!-- 
     <javaTypeResolver type=""> type屬性: 這可用於指定一個使用者提供的Java型別解析器。這個類必須實現介面org.mybatis.generator.api。JavaTypeResolver,必須有一個公共的預設建構函式。屬性還可以接受特殊的值預設在這種情況下,將使用預設的實現(這同樣的效果不指定型別)。 
     該標籤支援的屬性: 
     forceBigDecimals:預設是false 是否強制使用BigDecimal來表示所有的十進位制和數值欄位。 
     •如果規模更大•然後零,或長度大於18,那麼不只。將使用BigDecimal型別 
  •如果其長度為10到18歲,則Java型別解析器將java.lang.Long來代替了。 
  •如果長度為5到9,然後Java型別解析器將替換一個Java.lang.integer。 
  •如果其長度小於5,則Java型別解析器將java.lang.Short替代。 
      
     --> 
    <javaTypeResolver > 
     <property name="" value=""/> 
    </javaTypeResolver> 
    <!-- 生成vo物件 --> 
    <!-- 
    < javaModelGenerator >元素用於定義Java模型生成的屬性。 
    Java模型生成器建立主鍵類,記錄類,和查詢示例類相匹配的表進行自省。這個元素是所需的子元素<上下文>元素。 
    
    支援的屬性: 
    constructorBased: 
    此屬性用於選擇是否MyBatis生成器將生成一個類的建構函式,它接受一個值類中的每個欄位。同時,SQL結果地圖將建成投入使用建構函式而不是“setter”為每個欄位。 
    這個屬性是隻適用於MyBatis3和將被忽略了iBATIS2。 
    這個屬性可以被相應的屬性在< table >元素。 
    預設值是false。 
    
    immutable:不可變,此屬性用於選擇是否MyBatis生成器將產生不可變模型類——這意味著類不會有“setter”方法和建構函式會接受類中每個欄位的值。預設為false. 
    trimStrings: 
    此屬性用於選擇是否MyBatis生成器新增程式碼來修剪的白色空間從字元欄位從資料庫返回的。這可以是很有用的,如果您的資料庫將資料儲存在字元欄位而不是VARCHAR欄位。當真正的,MyBatis生成器將插入程式碼來削減字元欄位。 
    預設值是false。 
     --> 
    <javaModelGenerator targetPackage="${modelPackage}" targetProject="${targetProject}" /> 
    <!-- 生成用於查詢的Example物件 --> 
    <sqlMapGenerator targetPackage="${sqlMapperPackage}" targetProject="${targetProject}" /> 
    <!-- 生成DAO的類檔案以及配置檔案 --> 
    <!-- 
    < javaClientGenerator >元素是用來定義Java客戶機程式碼生成器的屬性。 
    Java客戶機生成器用來建立Java介面和類,以便可以方便地使用生成的Java模型和XML對映檔案。 
    對於iBATIS2目標環境,這些生成的物件採用的形式DAO介面和實現類。 
    對於MyBatis,生成的物件採用的形式mapper介面。 
    這個元素是一個可選的子元素<上下文>元素。 
    如果你不指定這個元素,然後MyBatis生成器(MBG)不會生成Java客戶端介面和類。 
    
    其中的type屬性: 
    如果targetRuntime 為MyBatis3 
    XMLMAPPER:生成的物件將Java介面MyBatis 3。x mapper基礎設施。介面將會依賴生成的XML對映器檔案。一般都是使用這個XMLMAPPER. 
     --> 
    <javaClientGenerator targetPackage="${daoMapperPackage}" targetProject="${targetProject}" type="XMLMAPPER" /> 
       <!-- 
    <table>元素用於選擇資料庫中的一個表。選擇的表將導致生成以下物件為每個表: 
     •一個MyBatis / iBATIS•格式化的SQL的對映檔案 
     •一組類,形成了“模型”表包括: 
     •一個類來匹配•表的主鍵(如果表有一個主鍵)。 
     •班表中欄位匹配的,不是在主鍵,而非BLOB欄位。這個類將擴充套件主鍵,如果有一個。 
     •一個類來持有任何表中的BLOB欄位(如果有的話)。這個類將擴充套件其中一個的前面兩個類取決於表的配置。 
     •一個類,用於生成動態where子句,在不同的“by Example”方法(selectByExample,deleteByExample)。 
     •(可選)DAO介面和類 
     
     tableName:必須配置  指定表的名稱 
     
     domainObjectName:生成javabean物件的基本名稱。如果未指定,MBG將自動基於表名生成。 

     這個名字(無論是在這裡指定,或自動生成)將被用來作為域類名和DAO類的名字。 
     
     enableInsert:是否生成插入語句。預設是true 
     enableSelectByPrimaryKey:是否通過主鍵生成選擇語句。不管是否有這種設定,如果該表沒有一個主鍵將不會生成。 
     enableUpdateByPrimaryKey:是否通過主鍵生成更新語句。如果該表沒有主鍵,不管是否設定該屬性,語句將不會生成。 
     enableDeleteByPrimaryKey:是否通過主鍵生成刪除語句。如果該表沒有主鍵,不管這種設定該屬性,語句將不會生成。 
     enableDeleteByExample:是否通過example物件生成刪除語句。這個宣告使得許多不同的動態刪除在執行時生成。 
     enableCountByExample:是否通過example物件生成計算行數語句。該語句將返回一個表中的行數相匹配的example。 
     enableUpdateByExample:是否通過example物件生成更新語句。該語句將更新一個表中相匹配的記錄。 

    selectByPrimaryKeyQueryId:這個值將被新增到選擇列表中選擇通過主鍵的宣告在本表格:“' <值>作為QUERYID”。這可以用於識別查詢在DBA在執行時跟蹤工具。如果你使用這樣的價值,你應該指定一個唯一的id為每個不同的查詢生成MBG。 
     selectByExampleQueryId:這個值將被新增到選擇列表中選擇通過例子的宣告在本表格:“' <值>作為QUERYID”。這可以用於識別查詢在DBA在執行時跟蹤工具。如果你使用這樣的價值,你應該指定一個唯一的id為每個不同的查詢生成MBG。 
     enableSelectByExample:是否應該生成通過example的選擇語句。這個宣告使得許多不同的動態查詢是在執行時生成。 
     
     
     modelType:此屬性用於覆蓋預設的模型型別,如果你想對這張表這麼做。如果未指定,MBG將生成的域物件基於上下文預設的模型型別。 
     該模型型別定義瞭如何將生成MBG域類。 
     一些模型型別MBG將生成一個單一的域類為每個表,和其他可能產生不同的類MBG取決於表的結構。 
     escapeWildcards:排除萬用字元。這意味著無論SQL萬用字元(' _ '和' % ')的模式和表名都應該避免在搜尋列。這是一些驅動要求如果模式或表包含一個SQL萬用字元(例如,如果一個表的名字是MY_TABLE,一些驅動要求的下劃線字元進行轉義)。 
       --> 
    <table schema="" tableName="base_user" > 
    </table> 
  </context> 
</generatorConfiguration>