mybatis generator插件自定義修改

為了讓前端工程師在swagger API文檔中看到各個(gè)實(shí)體類屬性的注釋說(shuō)明,而不用再去單獨(dú)查看數(shù)據(jù)字典,同時(shí)解決在接收和返回日期格式的數(shù)據(jù)時(shí)需要手動(dòng)對(duì)每個(gè)日期格式的字段添加相應(yīng)注解的問(wèn)題,修改mybatis-generator插件,讓其在生成實(shí)體類的時(shí)候就自動(dòng)生成相應(yīng)注解,而不用一個(gè)一個(gè)從數(shù)據(jù)字典中復(fù)制,提高工作效率。在這個(gè)過(guò)程中最大的收獲就是弄清楚了獲取插件源碼、修改相應(yīng)代碼,然后重新打包替換的整個(gè)流程,以后再修改插件就是輕車熟路了,最終自動(dòng)生成實(shí)體類的主要代碼 如下:

/**
 * 實(shí)體類對(duì)應(yīng)的數(shù)據(jù)表為: 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 = "用戶登錄賬號(hào)")
    private String userNo;

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

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

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

    @ApiModelProperty(value = "手機(jī)號(hào)")
    private String userPhone;

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

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

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

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

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

    @ApiModelProperty(value = "記錄修改時(shí)間")
    @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、通過(guò)Eclipse Marketplace安裝使用

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

通過(guò)Eclipse Marketplace安裝

使用方法:在配置文件(generatorConofig.xml)上右鍵,Run As==>Run Mybatis Generator,即會(huì)在配置文件指定的目錄下生成相應(yīng)的文件,配置文件主要的配置會(huì)在下文說(shuō)明,詳細(xì)說(shuō)明請(qǐng)查看文末的參考資料。

使用

2、通過(guò)手動(dòng)下載插件安裝使用

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

下載mybatis-generator-core 1.3.5插件

解壓,將featuresplugins 兩個(gè)文件夾拷貝到eclipse安裝目錄下的dropins 中 ,重啟eclipse,使用方法同上;

plugins

3、通過(guò)maven管理插件

具體的配置方法這里不細(xì)說(shuō),主要說(shuō)說(shuō)使用的方法:

  • 安裝EasyShell 插件:

    通過(guò)EasyShell插件運(yùn)行命令生成文件

    然后運(yùn)行如下命令:

    mvn mybatis-generator:generate
    
  • 通過(guò)maven builder運(yùn)行

    在項(xiàng)目上右鍵,Run As ==> Maven build...,在Goals中輸入mybatis-generator:generate ,點(diǎn)擊run運(yùn)行,刷新整個(gè)項(xiàng)目才能看到生成的文件 ,如下圖:

    通過(guò)maven build 運(yùn)行

    ?

二、獲取插件源碼

Window ==> Show view ==> other,打開Plug-ins 視圖,然后將插件導(dǎo)出成項(xiàng)目,如下圖:

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

生成的源碼結(jié)構(gòu)如下圖:

源碼結(jié)構(gòu)

三、根據(jù)實(shí)際需求修改源碼

獲取了源碼之后就可以根據(jù)自己的實(shí)際需求來(lái)進(jìn)行修改了,這次修改主要是通過(guò)調(diào)整注釋的生成達(dá)到自動(dòng)生成swagger注解和處理日期格式注解的目的,控制注釋生成的文件是DefaultCommentGenerator.java ,剩下的就是弄清楚類注釋、字段注釋、方法注釋具體是由哪個(gè)方法控制的,需要在哪進(jìn)行修改,然后就是進(jìn)行字符串的拼接,我修改后的源碼 ,源碼詳細(xì)剖析

四、重新打包并替換

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

javacDefaultEncoding.. = UTF-8
解決中文亂碼問(wèn)題

為了打出的jar包可以直接被運(yùn)行,在MANIFEST.MF 中添加運(yùn)行入口類的配置,否則會(huì)報(bào)jar中沒有主清單屬性 的錯(cuò):

Main-Class: org.mybatis.generator.api.ShellRunner
配置運(yùn)行入口類

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

重新打包-1
配置相關(guān)參數(shù)

將重新生成的jar包如下:

重新生成的jar包

1、通過(guò)Eclipse Marketplace安裝的替換

待測(cè)試

2、通過(guò)手動(dòng)下載插件安裝的替換

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

3、通過(guò)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倉(cāng)庫(kù)(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倉(cāng)庫(kù)(Repository)中找到此jar包所在的路徑,用新生成的jar包修改成同名(名稱對(duì)插件的功能沒有影響)后替換即可;

五、配置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>
    <!-- 數(shù)據(jù)庫(kù)驅(qū)動(dòng) 注意:這個(gè) location要指明\MySQL-connector-Java jar包的絕對(duì)路徑 -->
    <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" />
            <!-- 是否去除自動(dòng)生成的所有注釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="false" />
            <!-- 是否添加字段注釋 true:是 false:否 -->
            <property name="addRemarkComments" value="true" />
            <!-- 自定義屬性 作者名稱 -->
            <property name="author" value="Jeff" />
        </commentGenerator>

        <!--數(shù)據(jù)庫(kù)鏈接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>

        <!-- 配置生成實(shí)體類的包名和位置 -->
        <!-- 通過(guò)maven管理插件時(shí)targetProject的路徑為絕對(duì)路徑:D:\workspace_oxygen\mybatis3 -->
        <!-- 通過(guò)自安裝插件生成時(shí)的地址:mybatis3 -->
        <javaModelGenerator targetPackage="model"
            targetProject="mybatis3">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        
        <!-- 配置生成映射文件的包名和位置 -->
        <!-- 通過(guò)maven管理插件時(shí)targetProject的路徑為絕對(duì)路徑:D:\workspace_oxygen\mybatis3 -->
        <!-- 通過(guò)自安裝插件生成時(shí)的地址:mybatis3 -->
        <sqlMapGenerator targetPackage="mapperXml"
            targetProject="mybatis3">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        
        <!-- 配置生成mapper文件的包名和位置 -->
        <!-- 通過(guò)maven管理插件時(shí)targetProject的路徑為絕對(duì)路徑:D:\workspace_oxygen\mybatis3 -->
        <!-- 通過(guò)自安裝插件生成時(shí)的地址: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>

配置文件中需要注意的幾點(diǎn):

  • 只有將suppressAllComments 設(shè)置為false 才能生成注釋;
  • 只有將addRemarkComments 設(shè)置為true 才能生成字段的注釋;
  • 只有將suppressDate 設(shè)置為false 才能顯示時(shí)間;
  • 可以通過(guò)author 指定生成的實(shí)體類中顯示的作者名稱;
  • 通過(guò)手動(dòng)安裝的插件配置路徑需要寫相對(duì)路徑 ,而通過(guò)maven管理的插件需要寫絕對(duì)路徑,如果路徑配置有誤,則不能正常生成** ;

六、資料下載

修改后的源碼

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

所有資料下載

七、參考資料

MyBatis Generator中文文檔

mybatis-generator-core-chinese-annotation-1.3.5

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

Mybatis generator 生成domain字段帶數(shù)據(jù)庫(kù)注釋

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

Eclipse插件開發(fā) 導(dǎo)出插件項(xiàng)目為jar包時(shí)報(bào)錯(cuò) 出現(xiàn)中文亂碼解決辦法

MANIFEST.MF 文件內(nèi)容完全詳解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,261評(píng)論 6 342
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,901評(píng)論 25 709
  • 前言 最近做回后臺(tái)開發(fā),重新抓起以前學(xué)過(guò)的SSM(Spring+Spring MVC+Mybatis),但是發(fā)現(xiàn)配...
    Raye閱讀 6,637評(píng)論 15 79
  • 因?yàn)?號(hào)就要鋼琴比賽了。感賞兒子今天早上就去學(xué)鋼琴了,今天中午練了一個(gè)小時(shí),晚上又練了一個(gè)小時(shí)。一天彈了3個(gè)小時(shí)鋼...
    玲燕閱讀 328評(píng)論 0 4

友情鏈接更多精彩內(nèi)容