mybatis generator插件自定義修改

為了讓前端工程師在swagger API文檔中看到各個實體類屬性的注釋說明唧瘾,而不用再去單獨查看數據字典,同時解決在接收和返回日期格式的數據時需要手動對每個日期格式的字段添加相應注解的問題,修改mybatis-generator插件瞬女,讓其在生成實體類的時候就自動生成相應注解秀鞭,而不用一個一個從數據字典中復制,提高工作效率稻艰。在這個過程中最大的收獲就是弄清楚了獲取插件源碼懂牧、修改相應代碼,然后重新打包替換的整個流程尊勿,以后再修改插件就是輕車熟路了僧凤,最終自動生成實體類的主要代碼 如下:

/**
 * 實體類對應的數據表為: user_info
 * @author xia
 * @date 2017-07-19 13:58:22
 */
@ApiModel(value = "執(zhí)法人信息表")
public class UserInfo {
    @ApiModelProperty(value = "ID")
    private Integer id;

    @ApiModelProperty(value = "用戶登錄賬號")
    private String userNo;

    @ApiModelProperty(value = "姓名")
    private String userName;

    @ApiModelProperty(value = "姓名拼音")
    private String spellName;

    @ApiModelProperty(value = "密碼")
    private String password;

    @ApiModelProperty(value = "手機號")
    private String userPhone;

    @ApiModelProperty(value = "性別")
    private Integer userGender;

    @ApiModelProperty(value = "頭像地址")
    private String userImg;

    @ApiModelProperty(value = "職務")
    private String userDuty;

    @ApiModelProperty(value = "排序號")
    private Integer sortCode;

    @ApiModelProperty(value = "記錄創(chuàng)建時間")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @ApiModelProperty(value = "記錄修改時間")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    public Date getCreateTime() {
        return createTime;
    }

    @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    public Date getUpdateTime() {
        return updateTime;
    }
}

一、mybatis generator插件安裝和使用

1元扔、通過Eclipse Marketplace安裝使用

打開Help=>Eclipse Marketplace躯保,搜索mybatis generator,安裝即可澎语,如下圖:

通過Eclipse Marketplace安裝

使用方法:在配置文件(generatorConofig.xml)上右鍵途事,Run As==>Run Mybatis Generator,即會在配置文件指定的目錄下生成相應的文件咏连,配置文件主要的配置會在下文說明盯孙,詳細說明請查看文末的參考資料。

使用

2祟滴、通過手動下載插件安裝使用

mybatis-generator-core 1.3.5官方下載地址 ,下載eclipse插件振惰,如下圖:

下載mybatis-generator-core 1.3.5插件

解壓,將featuresplugins 兩個文件夾拷貝到eclipse安裝目錄下的dropins 中 垄懂,重啟eclipse骑晶,使用方法同上;

plugins

3草慧、通過maven管理插件

具體的配置方法這里不細說桶蛔,主要說說使用的方法:

  • 安裝EasyShell 插件:

    通過EasyShell插件運行命令生成文件

    然后運行如下命令:

    mvn mybatis-generator:generate
    
  • 通過maven builder運行

    在項目上右鍵,Run As ==> Maven build...漫谷,在Goals中輸入mybatis-generator:generate 仔雷,點擊run運行,刷新整個項目才能看到生成的文件 ,如下圖:

    通過maven build 運行

    ?

二碟婆、獲取插件源碼

Window ==> Show view ==> other电抚,打開Plug-ins 視圖,然后將插件導出成項目竖共,如下圖:

添加插件視圖
獲取插件源碼

生成的源碼結構如下圖:

源碼結構

三蝙叛、根據實際需求修改源碼

獲取了源碼之后就可以根據自己的實際需求來進行修改了,這次修改主要是通過調整注釋的生成達到自動生成swagger注解和處理日期格式注解的目的公给,控制注釋生成的文件是DefaultCommentGenerator.java 借帘,剩下的就是弄清楚類注釋、字段注釋淌铐、方法注釋具體是由哪個方法控制的肺然,需要在哪進行修改,然后就是進行字符串的拼接匣沼,我修改后的源碼 狰挡,源碼詳細剖析 捂龄。

四释涛、重新打包并替換

代碼修改完成后只需重新打包替換原先的包就行了,為解決打包出的插件中有中文亂碼的問題倦沧,須在build.properties 中配置:

javacDefaultEncoding.. = UTF-8
解決中文亂碼問題

為了打出的jar包可以直接被運行唇撬,在MANIFEST.MF 中添加運行入口類的配置,否則會報jar中沒有主清單屬性 的錯:

Main-Class: org.mybatis.generator.api.ShellRunner
配置運行入口類

配置完成之后操作:項目 ==> 右鍵 ==> Export == > Deployable plug-ins and fragments:

重新打包-1
配置相關參數

將重新生成的jar包如下:

重新生成的jar包

1展融、通過Eclipse Marketplace安裝的替換

待測試

2窖认、通過手動下載插件安裝的替換

替換eclipse安裝目錄下dropins ==> plugins中jar包,替換后需要重啟eclipse才能生效告希;

3扑浸、通過maven管理插件的替換

查看pom.xml中引用插件的信息:

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.5</version>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>
    </dependencies>
</plugin>

此處引用的是mybatis-generator-maven-plugin ,在本地maven倉庫(Repository)中找到mybatis-generator-maven-plugin jar包燕偶,解壓打開plugin.xml 查看其引用的核心包:

<dependency>
  <groupId>org.mybatis.generator</groupId>
  <artifactId>mybatis-generator-core</artifactId>
  <type>jar</type>
  <version>1.3.5</version>
</dependency>

從配置文件中可以看到插件引用的核心包是org.mybatis.generator.1.3.5 喝噪,在本地maven倉庫(Repository)中找到此jar包所在的路徑,用新生成的jar包修改成同名(名稱對插件的功能沒有影響)后替換即可指么;

五酝惧、配置generatorConfig.xml

<?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>
    <!-- 數據庫驅動 注意:這個 location要指明\MySQL-connector-Java jar包的絕對路徑 -->
    <classPathEntry
        location="E:\software\eclipse\Repository\mysql\mysql-connector-java\5.1.42\mysql-connector-java-5.1.42.jar" />

    <context id="marketing" targetRuntime="MyBatis3"
        defaultModelType="flat">
        <property name="javaFileEncoding" value="UTF-8" />

        <!-- 配置生成toString()方法 -->
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />

        <commentGenerator>
            <!-- 是否禁止顯示日期 true:是 : false:否 -->
            <property name="suppressDate" value="false" />
            <!-- 是否去除自動生成的所有注釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="false" />
            <!-- 是否添加字段注釋 true:是 false:否 -->
            <property name="addRemarkComments" value="true" />
            <!-- 自定義屬性 作者名稱 -->
            <property name="author" value="Jeff" />
        </commentGenerator>

        <!--數據庫鏈接URL,用戶名伯诬、密碼 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/test" 
            userId="root"
            password="root">
        </jdbcConnection>

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

        <!-- 配置生成實體類的包名和位置 -->
        <!-- 通過maven管理插件時targetProject的路徑為絕對路徑:D:\workspace_oxygen\mybatis3 -->
        <!-- 通過自安裝插件生成時的地址:mybatis3 -->
        <javaModelGenerator targetPackage="model"
            targetProject="mybatis3">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        
        <!-- 配置生成映射文件的包名和位置 -->
        <!-- 通過maven管理插件時targetProject的路徑為絕對路徑:D:\workspace_oxygen\mybatis3 -->
        <!-- 通過自安裝插件生成時的地址:mybatis3 -->
        <sqlMapGenerator targetPackage="mapperXml"
            targetProject="mybatis3">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        
        <!-- 配置生成mapper文件的包名和位置 -->
        <!-- 通過maven管理插件時targetProject的路徑為絕對路徑:D:\workspace_oxygen\mybatis3 -->
        <!-- 通過自安裝插件生成時的地址:mybatis3 -->
        <javaClientGenerator type="XMLMAPPER"
            targetPackage="mapper" targetProject="mybatis3">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        
        <!-- 配置需要反向生成表的信息 -->
        <table tableName="user_info" domainObjectName="UserInfo"
            enableCountByExample="false" enableUpdateByExample="false"
            enableDeleteByExample="false" enableSelectByExample="false"
            selectByExampleQueryId="false">
            <property name="ignoreQualifiersAtRuntime" value="true" />
            <generatedKey column="id" sqlStatement="MySql" identity="true" />
        </table>
    </context>
</generatorConfiguration>

配置文件中需要注意的幾點:

  • 只有將suppressAllComments 設置為false 才能生成注釋晚唇;
  • 只有將addRemarkComments 設置為true 才能生成字段的注釋;
  • 只有將suppressDate 設置為false 才能顯示時間盗似;
  • 可以通過author 指定生成的實體類中顯示的作者名稱哩陕;
  • 通過手動安裝的插件配置路徑需要寫相對路徑 ,而通過maven管理的插件需要寫絕對路徑,如果路徑配置有誤悍及,則不能正常生成** 葵礼;

六、資料下載

修改后的源碼

mybatis-generator-core 1.3.5官方下載地址

所有資料下載

七并鸵、參考資料

MyBatis Generator中文文檔

mybatis-generator-core-chinese-annotation-1.3.5

修改mybatis-generator-1.3.2源碼實現自定義代碼生成詳解(一)

Mybatis generator 生成domain字段帶數據庫注釋

mybatis-generator 代碼自動生成工具(maven方式)

Eclipse插件開發(fā) 導出插件項目為jar包時報錯 出現中文亂碼解決辦法

MANIFEST.MF 文件內容完全詳解

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末鸳粉,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子园担,更是在濱河造成了極大的恐慌届谈,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弯汰,死亡現場離奇詭異艰山,居然都是意外死亡,警方通過查閱死者的電腦和手機咏闪,發(fā)現死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門曙搬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸽嫂,你說我怎么就攤上這事纵装。” “怎么了据某?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵橡娄,是天一觀的道長。 經常有香客問我癣籽,道長挽唉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任筷狼,我火速辦了婚禮瓶籽,結果婚禮上,老公的妹妹穿的比我還像新娘埂材。我一直安慰自己塑顺,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布楞遏。 她就那樣靜靜地躺著茬暇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寡喝。 梳的紋絲不亂的頭發(fā)上糙俗,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音预鬓,去河邊找鬼巧骚。 笑死赊颠,一個胖子當著我的面吹牛,可吹牛的內容都是我干的劈彪。 我是一名探鬼主播竣蹦,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼沧奴!你這毒婦竟也來了痘括?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤滔吠,失蹤者是張志新(化名)和其女友劉穎纲菌,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體疮绷,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡翰舌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了冬骚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椅贱。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖只冻,靈堂內的尸體忽然破棺而出庇麦,到底是詐尸還是另有隱情,我是刑警寧澤属愤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布女器,位于F島的核電站,受9級特大地震影響住诸,放射性物質發(fā)生泄漏。R本人自食惡果不足惜涣澡,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一贱呐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧入桂,春花似錦奄薇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜘腌,卻和暖如春沫屡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背撮珠。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工沮脖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓勺届,卻偏偏與公主長得像驶俊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子免姿,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理饼酿,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,822評論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,162評論 25 707
  • 前言 最近做回后臺開發(fā)驱负,重新抓起以前學過的SSM(Spring+Spring MVC+Mybatis)省有,但是發(fā)現配...
    Raye閱讀 6,530評論 15 79
  • 因為9號就要鋼琴比賽了。感賞兒子今天早上就去學鋼琴了购披,今天中午練了一個小時,晚上又練了一個小時肩榕。一天彈了3個小時鋼...
    玲燕閱讀 256評論 0 4