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

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

更多精彩内容请看 web前端中文站
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中的注释非常的漂亮。

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

0
如无特殊说明,文章均为原作者原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到