mybatis目前一直作為我主要使用的ORM框架,當然,它的簡單,SQL可控,高效才是我選擇它的最終原因。前段時間學習了他的實體,ORM的XML文件自動生成,感覺也是比較簡單。下面稍微介紹一下具體的配置方面的
在它的官網上,有幾種方式來生成類及配置。
1 從命令提示符 使用 XML 配置文件
2 作為Ant 任務使用 XML 配置文件
3 作為Maven Plugin
4 從另一個Java 程序使用 XML 配置文件
5 插件生成
今天,我只講實踐第3,5點:
一 使用MAVEN插件
首先在你的POM里面添加一個PLUG,
另外,針對MVN,需要設置兩個內置變量:
mybatis.generator.overwrite:表示每次生成是否覆蓋之前的文件,默認為否
mybatis.generator.configurationFile:表示生成代碼文件的配置文件,默認文件名為generatorConfig.xml,這里我進行自定義,因為插件生成對比MVN的生成,里面的配置項不能公用,當然。各位看官,有好的方式,也請分享一下。OK。MVN的配置生成就OK了。你只需要使用熟悉的mvn clean install,即可從DB生成你想要的實體,ORM的配置。
二 使用官方的插件
這個是基于eclipse的swt的,GITHUB上面,有這個插件的地址https://github.com/mybatis/generator/tree/master/eclipse/UpdateSite,下載下來,然后放到eclispe下面的dropins下面,重啟一下就行了。
最后,我們重點的講一下generatorConfig.xml這個配置項文件
classPathEntry :元素 用于添加運行類路徑位置到類路徑中的 MyBatis Generator(MBG)。 classPathEntry元素是generatorConfiguration的子元素.MBG 在這些情況下從這些路徑下加載類:
a 當加載 JDBC 驅動內省數據庫時
b 當加載根類中的 JavaModelGenerator 檢查重寫的方法時
context :元素用于指定生成一組對象的環境。子元素用于指定要連接到的數據庫、 要生成對象的類型和要內省的表。多個 context元素可以在generatorConfiguration元素中列出來,這樣可以在同一個MyBatis Generator (MBG)從不同的數據庫或者使用不同的生成生成器參數生成對象。以下都 是context的子元素
commentGenerator:用來定義注釋生成的屬性,主要有suppressAllComments,suppressDate這兩個屬性。其中suppressAllComments
表示是否生成注釋,suppressDate表示是否生成日期
jdbcConnection:定義數據庫相關的屬性說明,比較簡單,就不列了。
javaModelGenerator:JAVA的model生成配置,主要有targetPackage,targetProject丙個屬性
targetPackage:表示生成的MODEL包路徑
targetProject:表示生成的MODEL項目路徑
sqlMapGenerator:用于定義SQL映射生成器的屬性。SQL映射生成器為每一個內省的表生成MyBatis/iBATIS形式的XML文件。如果不指定一個javaClientGenerator,則適用以下規則:
如果您指定一個sqlMapGenerator,那么MBG將只生成SQL映射的XML文件和模型對象。如果您沒有指定一個sqlMapGenerator,那么MBG將只會生成模型對象。
targetPackage:這個包用于放置生成的SQL映射文件。在默認的生成器中,屬性"enableSubPackages"用來控制如何計算實際的包。
如果是true,如果表的catalog和schema存在,就將他們作為子包加起來。如果"enableSubPackages"是false(默認值),計算的package將是targetPackage屬性指定的值。MBG 將創建所需的生成包的文件夾。
targetProject:這用來指定生成SQL映射的目標項目。當在Eclipse環境中運行時,此選項指定保存對象的位置的項目和源文件夾。在其他環境中,此值應為本地文件系統上的現有目錄。如果它不存在,MBG不會創建它。
javaClientGenerator:用于定義 Java 客戶端代碼生成器的屬性。Java客戶端生成器生成Java接口和類,它可以簡單地使用生成的Java模型和XML映射文件。在iBATIS2目標環境中,這些對象可以生成DAO接口和實現類形式的代碼。對Mybatis來說,會生成Mapper接口形式的代碼。如果不指定此元素,然后代碼生成器(MBG)將不會生成Java客戶端接口和類。
table 元素用來從內省數據庫中選擇一個表。選定的表會生成如下的這些對象:
一個 MyBatis/iBATIS 格式的SQL映射文件
一組根據表生成的"model"類:
一個和表的主鍵匹配的類(如果表有主鍵)。
一個包含了非主鍵字段和BLOB字段的類,如果存在主鍵類,這個類就會繼承主鍵類。
如果表中包含BLOB字段,就會有一個包含了BLOB字段的類。這個類會根據表的配置繼承上面的一個或兩個類。
一個用于不同的"by example"方法(selectByExample, deleteByExample)生成動態查詢條件的類。
(可選) 一個DAO接口或者類。
最后給個配置截圖:
當然,這個mybatis的插件其實是不支持多表關聯去生成代碼。初看,好像是不太友好。不過,你靜下來想一下,其實也就明白。在一個大數據訪問的時代,為什么需要多表關聯。我們跟本不需要!!!就是要單表。足夠簡單,足夠清晰,足夠NB.話說回來,你確實需要多表關連時,可以在它的基礎上,再去改你的SQL了。
我的微信公眾號,歡迎溝通學習。
posted on 2016-01-30 13:45
alexcai 閱讀(3328)
評論(0) 編輯 收藏