??????? mybatis目前一直作為我主要使用的ORM框架伦乔,當(dāng)然,它的簡(jiǎn)單董习,SQL可控烈和,高效才是我選擇它的最終原因。前段時(shí)間學(xué)習(xí)了他的實(shí)體皿淋,ORM的XML文件自動(dòng)生成招刹,感覺(jué)也是比較簡(jiǎn)單。下面稍微介紹一下具體的配置方面的
在它的官網(wǎng)上沥匈,有幾種方式來(lái)生成類(lèi)及配置蔗喂。
1 從命令提示符?使用 XML 配置文件
2 作為Ant 任務(wù)使用 XML 配置文件
3 作為Maven Plugin
4 從另一個(gè)Java 程序使用 XML 配置文件
5 插件生成
今天,我只講實(shí)踐第3高帖,5點(diǎn):
一 使用MAVEN插件
首先在你的POM里面添加一個(gè)PLUG,
另外缰儿,針對(duì)MVN,需要設(shè)置兩個(gè)內(nèi)置變量:
mybatis.generator.overwrite:表示每次生成是否覆蓋之前的文件散址,默認(rèn)為否
mybatis.generator.configurationFile:表示生成代碼文件的配置文件乖阵,默認(rèn)文件名為generatorConfig.xml,這里我進(jìn)行自定義预麸,因?yàn)椴寮蓪?duì)比MVN的生成瞪浸,里面的配置項(xiàng)不能公用,當(dāng)然吏祸。各位看官对蒲,有好的方式,也請(qǐng)分享一下贡翘。OK蹈矮。MVN的配置生成就OK了。你只需要使用熟悉的mvn clean install,即可從DB生成你想要的實(shí)體鸣驱,ORM的配置泛鸟。
二 使用官方的插件
這個(gè)是基于eclipse的swt的,GITHUB上面踊东,有這個(gè)插件的地址https://github.com/mybatis/generator/tree/master/eclipse/UpdateSite北滥,下載下來(lái)刚操,然后放到eclispe下面的dropins下面,重啟一下就行了再芋。
最后菊霜,我們重點(diǎn)的講一下generatorConfig.xml這個(gè)配置項(xiàng)文件
classPathEntry :元素 用于添加運(yùn)行類(lèi)路徑位置到類(lèi)路徑中的 MyBatis Generator(MBG)。 classPathEntry元素是generatorConfiguration的子元素.MBG 在這些情況下從這些路徑下加載類(lèi):
a 當(dāng)加載 JDBC 驅(qū)動(dòng)內(nèi)省數(shù)據(jù)庫(kù)時(shí)
b 當(dāng)加載根類(lèi)中的 JavaModelGenerator 檢查重寫(xiě)的方法時(shí)
context :元素用于指定生成一組對(duì)象的環(huán)境祝闻。子元素用于指定要連接到的數(shù)據(jù)庫(kù)占卧、 要生成對(duì)象的類(lèi)型和要內(nèi)省的表。多個(gè) context元素可以在generatorConfiguration元素中列出來(lái)联喘,這樣可以在同一個(gè)MyBatis Generator (MBG)從不同的數(shù)據(jù)庫(kù)或者使用不同的生成生成器參數(shù)生成對(duì)象华蜒。以下都 是context的子元素
commentGenerator:用來(lái)定義注釋生成的屬性,主要有suppressAllComments,suppressDate這兩個(gè)屬性豁遭。其中suppressAllComments
表示是否生成注釋?zhuān)瑂uppressDate表示是否生成日期
jdbcConnection:定義數(shù)據(jù)庫(kù)相關(guān)的屬性說(shuō)明叭喜,比較簡(jiǎn)單,就不列了蓖谢。
javaModelGenerator:JAVA的model生成配置,主要有targetPackage捂蕴,targetProject丙個(gè)屬性
targetPackage:表示生成的MODEL包路徑
targetProject:表示生成的MODEL項(xiàng)目路徑
sqlMapGenerator:用于定義SQL映射生成器的屬性。SQL映射生成器為每一個(gè)內(nèi)省的表生成MyBatis/iBATIS形式的XML文件闪幽。如果不指定一個(gè)javaClientGenerator啥辨,則適用以下規(guī)則:
如果您指定一個(gè)sqlMapGenerator,那么MBG將只生成SQL映射的XML文件和模型對(duì)象盯腌。如果您沒(méi)有指定一個(gè)sqlMapGenerator溉知,那么MBG將只會(huì)生成模型對(duì)象。
targetPackage:這個(gè)包用于放置生成的SQL映射文件腕够。在默認(rèn)的生成器中级乍,屬性"enableSubPackages"用來(lái)控制如何計(jì)算實(shí)際的包。
如果是true帚湘,如果表的catalog和schema存在玫荣,就將他們作為子包加起來(lái)。如果"enableSubPackages"是false(默認(rèn)值)大诸,計(jì)算的package將是targetPackage屬性指定的值捅厂。MBG 將創(chuàng)建所需的生成包的文件夾。
targetProject:這用來(lái)指定生成SQL映射的目標(biāo)項(xiàng)目资柔。當(dāng)在Eclipse環(huán)境中運(yùn)行時(shí)焙贷,此選項(xiàng)指定保存對(duì)象的位置的項(xiàng)目和源文件夾。在其他環(huán)境中建邓,此值應(yīng)為本地文件系統(tǒng)上的現(xiàn)有目錄盈厘。如果它不存在永毅,MBG不會(huì)創(chuàng)建它孟岛。
javaClientGenerator:用于定義 Java 客戶(hù)端代碼生成器的屬性。Java客戶(hù)端生成器生成Java接口和類(lèi)票灰,它可以簡(jiǎn)單地使用生成的Java模型和XML映射文件注簿。在iBATIS2目標(biāo)環(huán)境中契吉,這些對(duì)象可以生成DAO接口和實(shí)現(xiàn)類(lèi)形式的代碼。對(duì)Mybatis來(lái)說(shuō)诡渴,會(huì)生成Mapper接口形式的代碼捐晶。如果不指定此元素,然后代碼生成器(MBG)將不會(huì)生成Java客戶(hù)端接口和類(lèi)妄辩。
table 元素用來(lái)從內(nèi)省數(shù)據(jù)庫(kù)中選擇一個(gè)表惑灵。選定的表會(huì)生成如下的這些對(duì)象:
一個(gè) MyBatis/iBATIS 格式的SQL映射文件
一組根據(jù)表生成的"model"類(lèi):
一個(gè)和表的主鍵匹配的類(lèi)(如果表有主鍵)。
一個(gè)包含了非主鍵字段和BLOB字段的類(lèi)眼耀,如果存在主鍵類(lèi)英支,這個(gè)類(lèi)就會(huì)繼承主鍵類(lèi)。
如果表中包含BLOB字段哮伟,就會(huì)有一個(gè)包含了BLOB字段的類(lèi)干花。這個(gè)類(lèi)會(huì)根據(jù)表的配置繼承上面的一個(gè)或兩個(gè)類(lèi)。
一個(gè)用于不同的"by example"方法(selectByExample, deleteByExample)生成動(dòng)態(tài)查詢(xún)條件的類(lèi)楞黄。
(可選) 一個(gè)DAO接口或者類(lèi)池凄。
最后給個(gè)配置截圖:
當(dāng)然,這個(gè)mybatis的插件其實(shí)是不支持多表關(guān)聯(lián)去生成代碼鬼廓。初看肿仑,好像是不太友好。不過(guò)桑阶,你靜下來(lái)想一下柏副,其實(shí)也就明白。在一個(gè)大數(shù)據(jù)訪(fǎng)問(wèn)的時(shí)代蚣录,為什么需要多表關(guān)聯(lián)割择。我們跟本不需要!N印荔泳!就是要單表。足夠簡(jiǎn)單虐杯,足夠清晰玛歌,足夠NB.話(huà)說(shuō)回來(lái),你確實(shí)需要多表關(guān)連時(shí)擎椰,可以在它的基礎(chǔ)上支子,再去改你的SQL了。