Mybatis-Generator(MBG)教程與Idea的MBG插件

簡介

Mybatis Generator(MBG)噪叙,下面我們統(tǒng)稱為MBG,是一個Mybatis和iBatis的代碼生成器琳钉。他可以內(nèi)省數(shù)據(jù)庫的表(或多個表)然后生成可以用來訪問(多個)表的基礎(chǔ)對象似枕。這樣減少了項目新建時各種配置對象求厕,配置文件和數(shù)據(jù)庫交互的麻煩戈抄。 MBG的解決了一些數(shù)據(jù)庫中比較重要的操作离唬,如CRUD(插入,查詢划鸽,更新输莺,刪除)。

有關(guān)Mybatis具體生成事項裸诽,可以參考Mybatis Generator官方文檔
Mybatis MBG設(shè)計用于開發(fā)環(huán)境中的交互嫂用,可以用在Ant 任務(wù),Maven插件丈冬,持續(xù)集成環(huán)境尸折。有關(guān)Mybatis的一些注意事項包括如下:

  • MBG 會自動合并已經(jīng)存在并且和新生成的文件重名的 XML。MBG 不會覆蓋您對已經(jīng)生成xml所做的修改殷蛇。 您可以反復(fù)的運行而不必擔(dān)心失去您自定義的更改实夹。 Mybatis Gnerator會更新上次運行生成的元素。
  • MBG 不會合并 Java 文件,如果你對一些MBG生成的文件做了修改粒梦,再次生成的時候亮航, 您可以手動合并這些更改。 當(dāng)您使用Eclipse 插件時, MBG 可以自動合并 Java 文件.

快速入門

概念

使用MBG的基本步驟
1匀们、創(chuàng)建和補全Mybatis MBG的配置文件缴淋,你至少要指定以下內(nèi)容

  • <jdbcConnection>素,指定如何連接數(shù)據(jù)庫
  • <JavaModelGenerator>泄朴,java模型對象生成位置
  • <SqlMapGenerator>重抖,SQL映射文件位置
  • 可選的,<javaClientGenerator>祖灰,java客戶端接口和類文件位置
  • 至少一個<table>元素

2钟沛、把配置文件保存在方便的位置
3、運行MBG配置文件局扶,可以通過Ant恨统,Maven,Java代碼等
4三妈、修改Mybatis的一些配置畜埋,以便自己能夠使用MBG生成的代碼

創(chuàng)建項目

1、借用原來的之前的Mybatis入門教程畴蒲,我們創(chuàng)建me.aihe.testdao包悠鞍,具體結(jié)構(gòu)如下。

項目結(jié)構(gòu)

2模燥、創(chuàng)建MBG配置文件咖祭,如果使用Idea集成開發(fā)環(huán)境掩宜,可下載Mybatis plugin,省了不少功夫心肪,極大的方便了我們的操作锭亏。

新建MBG配置文件

3纠吴、修改MBG配置文件內(nèi)容如下

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

    <!-- !!!! Driver Class Path !!!! -->
    <classPathEntry location="/Users/aihe/.m2/repository/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar" />

    <!--<properties resource="classpa"-->
    <context id="context" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressAllComments" value="false"/>
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!-- !!!! Database Configurations !!!! -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="aihe" password="123456"/>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- !!!! Model Configurations !!!! -->
        <javaModelGenerator targetPackage="me.aihe.testdao" targetProject="/Users/aihe/IdeaProjects/MybatisCook/src/main/java">
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- !!!! Mapper XML Configurations !!!! -->
        <sqlMapGenerator targetPackage="me.aihe.testdao" targetProject="/Users/aihe/IdeaProjects/MybatisCook/src/main/resources">
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- !!!! Mapper Interface Configurations !!!! -->
        <javaClientGenerator targetPackage="me.aihe.testdao" targetProject="/Users/aihe/IdeaProjects/MybatisCook/src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!-- !!!! Table Configurations !!!! -->
        <table tableName="Test" enableCountByExample="true" enableDeleteByExample="true" enableSelectByExample="true"
               enableUpdateByExample="true"/>
    </context>
</generatorConfiguration>

注意在<commentGenerator>里面有個suppressAllComments的屬性硬鞍,如果填寫為true的話,所有生成的模型文件雖然會沒有注釋戴已,但是Mapper.xml不會覆蓋固该,而是追加在后面,會導(dǎo)致運行出錯糖儡。建議設(shè)置為false

4伐坏、運行MBG
運行方式有很多種,基于Ant Task握联,Maven 插件桦沉,Java程序等,這里我們使用Maven Plugin金闽。
主意:建議大家下載Idea的Maven Helper插件纯露,方便了很多maven的操作。
配置Pom.xml文件代芜,添加MBG插件

   <build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <configuration>
                    <configurationFile>${basedir}/src/main/resources/mybatis-generator.xml</configurationFile>
                </configuration>
            </plugin>
        </plugins>
    </build>
運行Maven插件

5埠褪、查看結(jié)果

生成結(jié)果
生成結(jié)果

6、測試生成的代碼
我們的數(shù)據(jù)庫內(nèi)容如下

Test表內(nèi)容

測試程序

  @Test
    public void test11(){
        InputStream inputStream = null;
        SqlSession sqlSession = null;
        try {
            inputStream = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactory mSqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession = mSqlSessionFactory.openSession();

            TestMapper testMapper = sqlSession.getMapper(TestMapper.class);
            TestExample testExample =  new TestExample();
            TestExample.Criteria criteria = testExample.createCriteria();
            criteria.andContentLike("%內(nèi)容%");

            List<me.aihe.dao.Test>  testList = testMapper.selectByExample(testExample);
            System.out.println(testList);

//            Good good = goodMapper.getGoodAndCouponMap2(1);
//            System.out.println(good);

            sqlSession.commit();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (sqlSession != null) {
                sqlSession.close();
            }
        }
    }

運行結(jié)果如下:

運行結(jié)果

插件

Mybaitis Generator有一些官方的插件挤庇,可以更好的定制生成的文件內(nèi)容钞速。

//緩存插件,生成的Mapper.xml文件中添加緩存配置
 <plugin type="org.mybatis.generator.plugins.CachePlugin"></plugin>

//生成的Model文件嫡秕,加上toString方法
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"</plugin>
//生成的Model文件實現(xiàn)Serializable接口
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
//虛擬主鍵插件..
<plugin type="org.mybatis.generator.plugins.VirtualPrimaryKeyPlugin"></plugin>

還有一些額外的插件渴语,可以用途比較少,在這里就先不提到了昆咽。

總結(jié)

本文主要演示了一種通過Maven 插件來使用MBG生成JavaBean遵班,Mapper文件的案例。最后測試了生成代碼的可用性潮改。Mybatis Generator確實方便了很多我們的工作狭郑。

小提示

如果想要生成Example類,記得在Context標簽上的targetRuntime為Mybatis3汇在。

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翰萨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子糕殉,更是在濱河造成了極大的恐慌亩鬼,老刑警劉巖殖告,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異雳锋,居然都是意外死亡黄绩,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門玷过,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爽丹,“玉大人,你說我怎么就攤上這事辛蚊≡列” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵袋马,是天一觀的道長初澎。 經(jīng)常有香客問我,道長虑凛,這世上最難降的妖魔是什么碑宴? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮桑谍,結(jié)果婚禮上延柠,老公的妹妹穿的比我還像新娘。我一直安慰自己霉囚,他們只是感情好捕仔,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盈罐,像睡著了一般榜跌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盅粪,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天钓葫,我揣著相機與錄音,去河邊找鬼票顾。 笑死础浮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的奠骄。 我是一名探鬼主播豆同,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼含鳞!你這毒婦竟也來了影锈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸭廷,沒想到半個月后枣抱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡辆床,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年佳晶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讼载。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡轿秧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出维雇,到底是詐尸還是另有隱情淤刃,我是刑警寧澤晒他,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布吱型,位于F島的核電站,受9級特大地震影響陨仅,放射性物質(zhì)發(fā)生泄漏津滞。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一灼伤、第九天 我趴在偏房一處隱蔽的房頂上張望触徐。 院中可真熱鬧,春花似錦狐赡、人聲如沸撞鹉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸟雏。三九已至,卻和暖如春览祖,著一層夾襖步出監(jiān)牢的瞬間孝鹊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工展蒂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留又活,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓锰悼,卻偏偏與公主長得像柳骄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子箕般,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理耐薯,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,822評論 6 342
  • 【原創(chuàng)文章可柿,轉(zhuǎn)載請注明原文章地址鸠踪,謝謝!】 MyBatis Generator 本身在設(shè)計的時候就考慮到了基礎(chǔ)的擴...
    叩丁狼教育閱讀 10,571評論 0 8
  • 放牛娃复斥,傻瓜瓜营密,牛放南山他想家。饑腸磨小牙目锭。 日落霞评汰,鳥喧嘩,牛下山岡他滾爬痢虹。陪爺喝晚茶被去。
    木貞ma閱讀 198評論 0 2
  • 文:麻油晃子 1 前一陣子朋友圈里到處被YSL星辰口紅刷屏,然而對于我這種無論買了多少支口紅都只涂一次就打入冷宮的...
    又藝青年啊閱讀 383評論 0 1