使用DefaultCommentGenerator自定义Mybatis生成的model注释

面试的时候,问有没有用过DefaultCommentGenerator,绝大部分程序员都不知道。其实它是用来生成model自定义注释的,本文就将介绍它的用法。

项目中的model,mapper以及mapper.xml基本都是用Mybatis Generator(以下简称为MBG)自动生成的,但是MBG自动生成的model的注释实在有点非人类,至少中国人是完全接受不了的,在配置中禁用掉注释吧,倒是简单了,可是生成的model类光秃秃的,啥都没有,字段方法没有注释,使用很不方便,别人看也不知道这个字段是啥含义。那么有没有办法优化自动生成model的注释呢?

答案当然是有,那就是使用DefaultCommentGenerator来自定义注释内容的生成。

首先我们需要继承DefaultCommentGenerator类:

package com.xttblog.plugin;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.Introsphttp://www.anbomei.com/d5a4/23609814a306.htmlectedTable;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.internal.DefaultCommentGenerator;
/**
 * 生成model中,字段增加注释
 */
public class CommentGenerator extends DefaultCommentGenerator {

	@Override
	public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
		super.addFieldComment(field, introspectedTable, introspectedColumn);
		if (introspectedColumn.getRemarks() != null && !introspectedColumn.getRemarks().equals("")) {
			field.addJavaDocLine("/**");
			field.addJavaDocLine(" * " + introspectedColumn.getRemarks());
			addJavadocTag(field, false);
			field.addJavaDocLine(" */");
		}
	}
}

然后再新建一个Xttblog类,运行Xttblog类就会直接生成model,mapper以及mapper.xml,类的代码如下:

package com.xttblog.test;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxExchttp://www.anbomei.com/9a6a/76988f0cf81f.htmlehttp://www.anbomei.com/41ff/ad123105f57e.htmlption;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.Defhttp://www.anbomei.com/4452/c174bf74d103.htmlaultShellCallback;
public class Xttblog {
    public static void main(String[] args) throws URISyntaxException {
        try {
            List<String> warnings = new ArrayList<String>();
            boolean overwrite = true;
     http://www.anbomei.com/682e/1a5a8d8cbeda.html       //直接获取generatorConfig.xml的文件路径 根据具体情况查看
            File configFile = new File("E:\\WorkPlace\\xttblog\\src\\main\\resources\\generatorConfig.xml");
            Chttp://www.anbomei.com/9a42/2bad5d6a032c.htmlonfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);
        } catch (SQLhttp://www.anbomei.com/866a/c70add2eef0e.htmlException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackThttp://www.anbomei.com/3ee6/da98f69bb1a7.htmlrace();
        } catch (InvalidConfigurationException e) {
            e.printStackTrace();
http://www.anbomei.com/ebae/3d1fae500f4a.html        } catch (XMLParserException e) {
            e.printStackTrace();
        }
    }
}

最后再修改一下generatorConfig.xml中的注释配置:

<commentGenerator type="com.xttblog.plugin.CommentGenerator">
   <!-- <property name="suppressDate" value="true"/>
	是否去除自动生成的注释 true:是 : false:否
	<property name="suppressAllComments"http://www.anbomei.com/683a/6db50f5bdffd.html value="false"/>-->
</commentGenerator>

commentGenerator 的type是你刚刚重写的DefaultCommentGenerator类的位置。

运行Xttblog,你会发现model,mapper以及mapper.xml都已经产生,实体类model中的注释非常的漂亮。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!