爲了讓前端工程師在swagger API文檔中看到各個實體類屬性的註釋說明,而不用再去單獨查看數據字典,同時解決在接收和返回日期格式的數據時須要手動對每一個日期格式的字段添加相應註解的問題,修改mybatis-generator插件,讓其在生成實體類的時候就自動生成相應註解,而不用一個一個從數據字典中複製,提升工做效率。在這個過程當中最大的收穫就是弄清楚了獲取插件源碼、修改相應代碼,而後從新打包替換的整個流程,之後再修改插件就是輕車熟路了,最終自動生成實體類的主要代碼 以下:html
/** * 實體類對應的數據表爲: user_info * @author xia * @date 2017-07-19 13:58:22 */ @ApiModel(value = "執法人信息表") 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 = "記錄建立時間") @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; } }
打開Help=>Eclipse Marketplace,搜索mybatis generator,安裝便可,以下圖:前端
使用方法:在配置文件(generatorConofig.xml)上右鍵,Run As==>Run Mybatis Generator,即會在配置文件指定的目錄下生成相應的文件,配置文件主要的配置會在下文說明,詳細說明請查看文末的參考資料。java
在 mybatis-generator-core 1.3.5官方下載地址 ,下載eclipse插件,以下圖:mysql
解壓,將features
和 plugins
兩個文件夾拷貝到eclipse安裝目錄下的dropins
中 ,重啓eclipse,使用方法同上;git
具體的配置方法這裏不細說,主要說說使用的方法:github
安裝EasyShell
插件:sql
而後運行以下命令:shell
mvn mybatis-generator:generate
經過maven builder運行數據庫
在項目上右鍵,Run As ==> Maven build...,在Goals中輸入mybatis-generator:generate
,點擊run運行,刷新整個項目才能看到生成的文件 ,以下圖:api
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:
將從新生成的jar包以下:
待測試
替換eclipse安裝目錄下dropins ==> plugins中jar包,替換後須要重啓eclipse才能生效;
查看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包修改爲同名(名稱對插件的功能沒有影響)後替換便可;
<?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-core-chinese-annotation-1.3.5
修改mybatis-generator-1.3.2源碼實現自定義代碼生成詳解(一)
Mybatis generator 生成domain字段帶數據庫註釋
mybatis-generator 代碼自動生成工具(maven方式)