123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 |
- package com.conpany.project;
- import org.mybatis.generator.api.CommentGenerator;
- import org.mybatis.generator.api.IntrospectedColumn;
- import org.mybatis.generator.api.IntrospectedTable;
- import org.mybatis.generator.api.dom.java.*;
- import org.mybatis.generator.api.dom.xml.XmlElement;
- import org.mybatis.generator.config.MergeConstants;
- import org.mybatis.generator.config.PropertyRegistry;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Properties;
- import static org.mybatis.generator.internal.util.StringUtility.isTrue;
- /**
- * @Title: MyCommentGenerator.java
- * @Package com.fendo.mybatis_generator_plus
- * @Description: mybatis generator 自定义comment生成器.
- * 基于MBG 1.3.5
- * @author fendo
- * @date 2017年10月5日 下午3:07:26
- * @version V1.0
- */
- public class MyCommentGenerator implements CommentGenerator{
-
- /**
- * properties配置文件
- */
- private Properties properties;
- /**
- * properties配置文件
- */
- private Properties systemPro;
-
- /*
- * 父类时间
- */
- private boolean suppressDate;
-
- /**
- * 父类所有注释
- */
- private boolean suppressAllComments;
-
- /**
- * 当前时间
- */
- private String currentDateStr;
-
- public MyCommentGenerator() {
- super();
- properties = new Properties();
- systemPro = System.getProperties();
- suppressDate = false;
- suppressAllComments = false;
- currentDateStr = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date());
- }
-
- /**
- * Java类的类注释
- */
- @Override
- public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
- if (suppressAllComments) {
- return;
- }
-
- StringBuilder sb = new StringBuilder();
- innerClass.addJavaDocLine("/**");
- sb.append(" * ");
- sb.append(introspectedTable.getFullyQualifiedTable());
- sb.append(" ");
- sb.append(getDateString());
- innerClass.addJavaDocLine(sb.toString().replace("\n", " "));
- innerClass.addJavaDocLine(" */");
- }
-
- /**
- * 为类添加注释
- */
- @Override
- public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {
- if (suppressAllComments) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- innerClass.addJavaDocLine("/**");
- sb.append(" * ");
- sb.append(" * ");
- sb.append(introspectedTable.getFullyQualifiedTable());
- innerClass.addJavaDocLine(sb.toString().replace("\n", " "));
- sb.setLength(0);
- sb.append(" * @author ");
- sb.append(systemPro.getProperty("user.name"));
- sb.append(" ");
- sb.append(currentDateStr);
- innerClass.addJavaDocLine(" */");
- }
-
-
- /**
- * Mybatis的Mapper.xml文件里面的注释
- */
- @Override
- public void addComment(XmlElement xmlElement) {
-
- }
-
- /**
- *
- *@Title addConfigurationProperties
- *@Description: 从该配置中的任何属性添加此实例的属性CommentGenerator配置。
- * 这个方法将在任何其他方法之前被调用。
- *@Author fendo
- *@Date 2017年10月5日 下午3:45:58
- *@return
- *@throws
- */
- @Override
- public void addConfigurationProperties(Properties properties) {
- this.properties.putAll(properties);
- suppressDate = isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_DATE));
- suppressAllComments = isTrue(properties.getProperty(PropertyRegistry.COMMENT_GENERATOR_SUPPRESS_ALL_COMMENTS));
- }
-
- /**
- *
- *@Title getDateString
- *@Description: 此方法返回格式化的日期字符串以包含在Javadoc标记中和XML注释。 如果您不想要日期,则可以返回null在这些文档元素中。
- *@Author fendo
- *@Date 2017年10月5日 下午3:45:58
- *@return
- *@throws
- */
- protected String getDateString() {
- String result = null;
- if (!suppressDate) {
- result = currentDateStr;
- }
- return result;
- }
-
- /**
- *
- *@Title addJavadocTag
- *@Description: 此方法为其添加了自定义javadoc标签。
- *@Author fendo
- *@Date 2017年10月5日 下午3:49:05
- *@param javaElement
- *@param markAsDoNotDelete
- *@throws
- */
- protected void addJavadocTag(JavaElement javaElement, boolean markAsDoNotDelete) {
- javaElement.addJavaDocLine(" *");
- StringBuilder sb = new StringBuilder();
- sb.append(" * ");
- sb.append(MergeConstants.NEW_ELEMENT_TAG);
- if (markAsDoNotDelete) {
- sb.append(" do_not_delete_during_merge");
- }
- String s = getDateString();
- if (s != null) {
- sb.append(' ');
- sb.append(s);
- }
- javaElement.addJavaDocLine(sb.toString());
- }
-
-
- /**
- * 为枚举添加注释
- */
- @Override
- public void addEnumComment(InnerEnum innerEnum, IntrospectedTable introspectedTable) {
- if (suppressAllComments) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- innerEnum.addJavaDocLine("/**");
- sb.append(" * ");
- sb.append(introspectedTable.getFullyQualifiedTable());
- innerEnum.addJavaDocLine(sb.toString().replace("\n", " "));
- innerEnum.addJavaDocLine(" */");
- }
-
- /**
- * Java属性注释
- */
- @Override
- public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
- if (suppressAllComments) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- field.addJavaDocLine("/**");
- sb.append(" * ");
- sb.append(introspectedTable.getFullyQualifiedTable());
- field.addJavaDocLine(sb.toString().replace("\n", " "));
- field.addJavaDocLine(" */");
-
-
-
- }
-
- /**
- * 为字段添加注释
- */
- @Override
- public void addFieldComment(Field field, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) {
- if (suppressAllComments) {
- return;
- }
- StringBuilder sb = new StringBuilder();
- field.addJavaDocLine("/**");
- sb.append(" * ");
- sb.append(introspectedColumn.getRemarks());
- field.addJavaDocLine(sb.toString().replace("\n", " "));
- field.addJavaDocLine(" */");
- }
-
- /**
- * 普通方法的注释,这里主要是XXXMapper.java里面的接口方法的注释
- */
- @Override
- public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
- if (suppressAllComments) {
- return;
- }
- method.addJavaDocLine("/**");
- addJavadocTag(method, false);
- method.addJavaDocLine(" */");
- }
-
-
- /**
- * 给getter方法加注释
- */
- @Override
- public void addGetterComment(Method method, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) {
- if (suppressAllComments) {
- return;
- }
- method.addJavaDocLine("/**");
- StringBuilder sb = new StringBuilder();
- sb.append(" * ");
- sb.append(introspectedColumn.getRemarks());
- method.addJavaDocLine(sb.toString().replace("\n", " "));
- sb.setLength(0);
- sb.append(" * @return ");
- sb.append(introspectedColumn.getActualColumnName());
- sb.append(" ");
- sb.append(introspectedColumn.getRemarks());
- method.addJavaDocLine(sb.toString().replace("\n", " "));
- method.addJavaDocLine(" */");
- }
-
- /**
- * 给Java文件加注释,这个注释是在文件的顶部,也就是package上面。
- */
- @Override
- public void addJavaFileComment(CompilationUnit compilationUnit) {
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
- compilationUnit.addFileCommentLine("/*");
- compilationUnit.addFileCommentLine("*");
- compilationUnit.addFileCommentLine("* "+compilationUnit.getType().getShortName()+".java");
- compilationUnit.addFileCommentLine("* Copyright(C) 2017-2020 fendo公司");
- compilationUnit.addFileCommentLine("* @date "+sdf.format(new Date())+"");
- compilationUnit.addFileCommentLine("*/");
- }
-
- /**
- * 为模型类添加注释
- */
- @Override
- public void addModelClassComment(TopLevelClass arg0, IntrospectedTable arg1) {
-
- }
-
- /**
- * 为调用此方法作为根元素的第一个子节点添加注释。
- */
- @Override
- public void addRootComment(XmlElement arg0) {
-
- }
-
-
- /**
- * 给setter方法加注释
- */
- @Override
- public void addSetterComment(Method method, IntrospectedTable introspectedTable,IntrospectedColumn introspectedColumn) {
- if (suppressAllComments) {
- return;
- }
- method.addJavaDocLine("/**");
- StringBuilder sb = new StringBuilder();
- sb.append(" * ");
- sb.append(introspectedColumn.getRemarks());
- method.addJavaDocLine(sb.toString().replace("\n", " "));
- Parameter parm = method.getParameters().get(0);
- sb.setLength(0);
- sb.append(" * @param ");
- sb.append(parm.getName());
- sb.append(" ");
- sb.append(introspectedColumn.getRemarks());
- method.addJavaDocLine(sb.toString().replace("\n", " "));
- method.addJavaDocLine(" */");
- }
-
- }
|