面试的时候,问有没有用过 DefaultCommentGenerator,绝大部分程序员都不知道。其实它是用来生成 model 自定义注释的,本文就将介绍它的用法。
更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏
项目中的 model,mapper 以及 mapper.xml 基本都是用Mybatis Generator(以下简称为MBG)自动生成的,但是MBG自动生成的 model 的注释实在有点非人类,至少中国人是完全接受不了的,在配置中禁用掉注释吧,倒是简单了,可是生成的 model 类光秃秃的,啥都没有,字段方法没有注释,使用很不方便,别人看也不知道这个字段是啥含义。那么有没有办法优化自动生成 model 的注释呢?
答案当然是有,那就是使用 DefaultCommentGenerator 来自定义注释内容的生成。
首先我们需要继承 DefaultCommentGenerator 类:
package com.lisa33xiaoq.net.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.lisa33xiaoq.net.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//lisa33xiaoq.net//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.lisa33xiaoq.net.plugin.CommentGenerator"> <!-- <property name="suppressDate" value="true"/> 是否去除自动生成的注释 true: 是 : false:否 <property name="suppressAllComments" value="false"/>--> </commentGenerator>
commentGenerator 的 type 是你刚刚重写的 DefaultCommentGenerator 类的位置。
运行 Xttblog,你会发现 model,mapper 以及 mapper.xml 都已经产生,实体类 model 中的注释非常的漂亮。
【注:本文源自网络文章资源,由站长整理发布】