mybatis自動(dòng)生成類(lèi)馅笙,ORM配置實(shí)踐

??????? 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了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末达舒,一起剝皮案震驚了整個(gè)濱河市值朋,隨后出現(xiàn)的幾起案子叹侄,更是在濱河造成了極大的恐慌,老刑警劉巖昨登,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趾代,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡丰辣,警方通過(guò)查閱死者的電腦和手機(jī)撒强,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)笙什,“玉大人飘哨,你說(shuō)我怎么就攤上這事∷銎荆” “怎么了杖玲?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)淘正。 經(jīng)常有香客問(wèn)我摆马,道長(zhǎng),這世上最難降的妖魔是什么鸿吆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任囤采,我火速辦了婚禮,結(jié)果婚禮上惩淳,老公的妹妹穿的比我還像新娘蕉毯。我一直安慰自己,他們只是感情好思犁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布代虾。 她就那樣靜靜地躺著,像睡著了一般激蹲。 火紅的嫁衣襯著肌膚如雪棉磨。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天学辱,我揣著相機(jī)與錄音乘瓤,去河邊找鬼。 笑死策泣,一個(gè)胖子當(dāng)著我的面吹牛衙傀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播萨咕,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼统抬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起聪建,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤发侵,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后妆偏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盅弛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年钱骂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挪鹏。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡见秽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出讨盒,到底是詐尸還是另有隱情解取,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布返顺,位于F島的核電站禀苦,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏遂鹊。R本人自食惡果不足惜振乏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秉扑。 院中可真熱鬧慧邮,春花似錦、人聲如沸舟陆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)秦躯。三九已至忆谓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踱承,已是汗流浹背陪毡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勾扭,地道東北人毡琉。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像妙色,于是被迫代替她去往敵國(guó)和親桅滋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容