為了讓前端工程師在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,安裝即可澎语,如下圖:
使用方法:在配置文件(generatorConofig.xml)上右鍵途事,Run As==>Run Mybatis Generator,即會在配置文件指定的目錄下生成相應的文件咏连,配置文件主要的配置會在下文說明盯孙,詳細說明請查看文末的參考資料。
2祟滴、通過手動下載插件安裝使用
在 mybatis-generator-core 1.3.5官方下載地址 ,下載eclipse插件振惰,如下圖:
解壓,將features
和 plugins
兩個文件夾拷貝到eclipse安裝目錄下的dropins
中 垄懂,重啟eclipse骑晶,使用方法同上;
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:
將重新生成的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-core-chinese-annotation-1.3.5
修改mybatis-generator-1.3.2源碼實現自定義代碼生成詳解(一)
Mybatis generator 生成domain字段帶數據庫注釋
mybatis-generator 代碼自動生成工具(maven方式)