mybatis generator 配置檔案解析
阿新 • • 發佈:2019-02-01
這是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>
應用是基於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>