mybatis generator根据表生成带 注释的实体类

       mybatis generator给我们开发带来诸多方便,免去一些繁琐的自写mapper、dao、实体类的步骤,但是有时会根据自己需要定制自己的东西,比如生成带注释的实体类,这时需要我们修改generator的源码。

       到网上下载源码包(地址:https://github.com/mybatis/generator/releases),这里我用的是1.3.6版本,解压后下再解压里面的

source包,创建maven项目,把源放进去。

mybatis generator根据表生成带 注释的实体类

打开org.mybatis.generator.api.dom.java.Field类,这是生成实体文件属性的写入类

 

找到getFormattedContent这个方法,加上这段代码,表示在写入属性名后面加上注释。

mybatis generator根据表生成带 注释的实体类

这样还没不行,我们打开org.mybatis.generator.internal.util.JavaBeansUtil类。在getJavaBeansField方法中加入如下代码

mybatis generator根据表生成带 注释的实体类

这样就完成了读取表字段注释写入到实体类中。

 

接着我们看看如何在类名上面加上类模型对应的表名和表注释

我们直接找到org.mybatis.generator.internal.DefaultCommentGenerator类的addModelClassComment方法,

我们直接将下面这个条件判断注释掉(suppressAllComents和addRemarkComents可以在generator.xml设置的属性,我这里暴力强制去除这个条件,具体可以自己研究。)

mybatis generator根据表生成带 注释的实体类

在下面这行表示获取表注释

mybatis generator根据表生成带 注释的实体类

接着定制自己的注释样式

mybatis generator根据表生成带 注释的实体类

 

把没必要的可以注释掉不让生成

mybatis generator根据表生成带 注释的实体类

当我们打包后把它替换原来的jar包再用它处理生成时发觉只生成了属性注释,没有对应的表注释。

于是我们打开连接jdbc连接数据库的工厂类org.mybatis.generator.internal.JDBCConnectionFactory,找到getConnection这个方法

在连接属性设置这里加上这一行。

mybatis generator根据表生成带 注释的实体类

好!接着打包生成jar文件,替换原来的jar包,再次执行生成。

mybatis generator根据表生成带 注释的实体类

没问题!

但是如果我们要加上是对应哪个表要怎么弄呢?

我们再回到org.mybatis.generator.internal.DefaultCommentGenerator类的addModelClassComment方法里,

知道introspectedTable这个是可以获取表属性的一个对象,但是我们在类里面发现并没有能获取表名的属性,这时我们可以自己加上表名的属性。

mybatis generator根据表生成带 注释的实体类

我们接着看看怎么获取表名名并设置到属性里面,

找到org.mybatis.generator.internal.db.DatabaseIntrospector这个类的enhanceIntrospectedTable方法

再这里获取表名和设置对象属性

mybatis generator根据表生成带 注释的实体类

最后在addModelClassComment方法上加上如下代码

mybatis generator根据表生成带 注释的实体类

好的,可以了。为了防止注释上的中文乱码。找到org.mybatis.generator.api.MyBatisGenerator写入实体类文件的方法writeFile。加上UTF-8输出流方式

mybatis generator根据表生成带 注释的实体类

最后打包替换,再次生成实体类文件,如图

mybatis generator根据表生成带 注释的实体类

 

 

 

对应下载:https://download.csdn.net/download/qq_38212332/10598710