• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

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

JAVA web前端中文站 2年前 (2017-11-02) 1180次浏览 已收录 0个评论

面试的时候,问有没有用过 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 中的注释非常的漂亮。

【注:本文源自网络文章资源,由站长整理发布】


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用 DefaultCommentGenerator 自定义 Mybatis 生成的 model 注释
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址