为了让前端工程师在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方式)