面试的时候,问有没有用过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.IntrospectedTable; 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.URISyntaxException; 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.DefaultShellCallback; public class Xttblog { public static void main(String[] args) throws URISyntaxException { try { List<String> warnings = new ArrayList<String>(); boolean overwrite = true; //直接获取generatorConfig.xml的文件路径 根据具体情况查看 File configFile = new File("E://WorkPlace//xttblog//src//main//resources//generatorConfig.xml"); ConfigurationParser 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 (SQLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } catch (InvalidConfigurationException e) { e.printStackTrace(); } catch (XMLParserException e) { e.printStackTrace(); } } }
最后再修改一下generatorConfig.xml中的注释配置:
<commentGenerator type="com.xttblog.plugin.CommentGenerator"> <!-- <property name="suppressDate" value="true"/> 是否去除自动生成的注释 true:是 : false:否 <property name="suppressAllComments" value="false"/>--> </commentGenerator>
commentGenerator 的type是你刚刚重写的DefaultCommentGenerator类的位置。
运行Xttblog,你会发现model,mapper以及mapper.xml都已经产生,实体类model中的注释非常的漂亮。
: » 使用DefaultCommentGenerator自定义Mybatis生成的model注释
原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/251692.html