|
@@ -0,0 +1,158 @@
|
|
|
+package com;
|
|
|
+
|
|
|
+import org.mybatis.generator.api.IntrospectedColumn;
|
|
|
+import org.mybatis.generator.api.IntrospectedTable;
|
|
|
+import org.mybatis.generator.api.dom.java.*;
|
|
|
+import org.mybatis.generator.internal.DefaultCommentGenerator;
|
|
|
+import org.mybatis.generator.internal.util.StringUtility;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Properties;
|
|
|
+
|
|
|
+public class CommentGenerator extends DefaultCommentGenerator {
|
|
|
+
|
|
|
+ private static final String EXAMPLE_SUFFIX="Example";
|
|
|
+ private static final String API_MODEL_PROPERTY_FULL_CLASS_NAME="io.swagger.annotations.ApiModelProperty";
|
|
|
+ private static final String API_MODEL_FULL_CLASS_NAME="io.swagger.annotations.ApiModel";
|
|
|
+
|
|
|
+
|
|
|
+ private Properties properties;
|
|
|
+ private Properties systemPro;
|
|
|
+ private boolean suppressDate;
|
|
|
+ private boolean suppressAllComments;
|
|
|
+ private String currentDateStr;
|
|
|
+
|
|
|
+ public CommentGenerator() {
|
|
|
+ super();
|
|
|
+ properties = new Properties();
|
|
|
+ systemPro = System.getProperties();
|
|
|
+ suppressDate = false;
|
|
|
+ suppressAllComments = false;
|
|
|
+ currentDateStr = (new SimpleDateFormat("yyyy-MM-dd")).format(new Date());
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addFieldComment(Field field, IntrospectedTable introspectedTable,
|
|
|
+ IntrospectedColumn introspectedColumn) {
|
|
|
+ if (suppressAllComments) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ field.addJavaDocLine("/**");
|
|
|
+ sb.append(" * ");
|
|
|
+ sb.append(introspectedColumn.getRemarks());
|
|
|
+ sb.append("\n");
|
|
|
+ sb.append(" * 列名:" + introspectedColumn.getActualColumnName() + " 类型:" + introspectedColumn.getJdbcTypeName()
|
|
|
+ + "(" + introspectedColumn.getLength() + ")" + " 允许空:" + introspectedColumn.isNullable() + " 缺省值:"
|
|
|
+ + introspectedColumn.getDefaultValue());
|
|
|
+ field.addJavaDocLine(sb.toString());
|
|
|
+ String remarks = introspectedColumn.getRemarks();
|
|
|
+ //根据参数和备注信息判断是否添加备注信息
|
|
|
+ if(StringUtility.stringHasValue(remarks)){
|
|
|
+// addFieldJavaDoc(field, remarks);
|
|
|
+ //数据库中特殊字符需要转义
|
|
|
+ if(remarks.contains("\"")){
|
|
|
+ remarks = remarks.replace("\"","'");
|
|
|
+ }
|
|
|
+ //给model的字段添加swagger注解
|
|
|
+ }
|
|
|
+ field.addJavaDocLine(" */");
|
|
|
+ field.addJavaDocLine("@ApiModelProperty(value = \""+remarks+"\")");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addFieldComment(Field field, IntrospectedTable introspectedTable) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addGeneralMethodComment(Method method, IntrospectedTable introspectedTable) {
|
|
|
+
|
|
|
+ if (suppressAllComments) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ sb.append("/**");
|
|
|
+ sb.append("\n");
|
|
|
+ sb.append(" * ");
|
|
|
+ sb.append("\n");
|
|
|
+ sb.append(" * @author zhangsan" + "\n");
|
|
|
+ if (!suppressDate) {
|
|
|
+
|
|
|
+ sb.append(" * @date " + currentDateStr + "\n");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Parameter> parameters = method.getParameters();
|
|
|
+
|
|
|
+ for (Parameter parameter : parameters) {
|
|
|
+
|
|
|
+ sb.append(" * @param " + parameter.getName() + "\n");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ sb.append(" * @return " + method.getReturnType());
|
|
|
+ sb.append("\n" + " */");
|
|
|
+ method.addJavaDocLine(sb.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addGetterComment(Method method, IntrospectedTable introspectedTable,
|
|
|
+ IntrospectedColumn introspectedColumn) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addSetterComment(Method method, IntrospectedTable introspectedTable,
|
|
|
+ IntrospectedColumn introspectedColumn) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable, boolean markAsDoNotDelete) {
|
|
|
+
|
|
|
+ super.addClassComment(innerClass, introspectedTable, markAsDoNotDelete);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addClassComment(InnerClass innerClass, IntrospectedTable introspectedTable) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void addModelClassComment(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
|
|
|
+
|
|
|
+ if (suppressAllComments) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ sb.append("/**");
|
|
|
+ sb.append("\n");
|
|
|
+ sb.append("* ");
|
|
|
+ sb.append("\n");
|
|
|
+ sb.append("* @author zhangsan" + "\n");
|
|
|
+ if (!suppressDate) {
|
|
|
+
|
|
|
+ sb.append("* @date " + currentDateStr + "\n");
|
|
|
+
|
|
|
+ }
|
|
|
+ String tableName = introspectedTable.getFullyQualifiedTableNameAtRuntime();
|
|
|
+ sb.append("* 数据表" +introspectedTable.getFullyQualifiedTableNameAtRuntime() + "映射bean,由Mybaits自动生成工具生成");
|
|
|
+ sb.append("\n" + "*/");
|
|
|
+ topLevelClass.addJavaDocLine(sb.toString());
|
|
|
+
|
|
|
+// topLevelClass.addJavaDocLine("@ApiModel(value = \""+tableName+"\")");
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void addJavaFileComment(CompilationUnit compilationUnit) {
|
|
|
+ super.addJavaFileComment(compilationUnit);
|
|
|
+ //只在model中添加swagger注解类的导入
|
|
|
+ if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
|
|
|
+ compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
|
|
|
+ }
|
|
|
+ if(!compilationUnit.isJavaInterface()&&!compilationUnit.getType().getFullyQualifiedName().contains(EXAMPLE_SUFFIX)){
|
|
|
+// compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_FULL_CLASS_NAME));
|
|
|
+ compilationUnit.addImportedType(new FullyQualifiedJavaType(API_MODEL_PROPERTY_FULL_CLASS_NAME));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|