feat: 添加辅助类字段注释。

This commit is contained in:
Suomm 2023-07-14 10:15:59 +08:00
parent 814e3f292f
commit bef15d31dc
3 changed files with 67 additions and 18 deletions

View File

@ -23,6 +23,7 @@ import com.mybatisflex.processor.builder.ContentBuilder;
import com.mybatisflex.processor.config.ConfigurationKey;
import com.mybatisflex.processor.config.MybatisFlexConfig;
import com.mybatisflex.processor.entity.ColumnInfo;
import com.mybatisflex.processor.entity.TableInfo;
import com.mybatisflex.processor.util.FileUtil;
import com.mybatisflex.processor.util.StrUtil;
@ -35,6 +36,7 @@ import javax.lang.model.element.*;
import javax.lang.model.type.DeclaredType;
import javax.lang.model.type.TypeKind;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.Elements;
import javax.lang.model.util.Types;
import javax.tools.JavaFileObject;
import java.io.File;
@ -77,12 +79,14 @@ public class MybatisFlexProcessor extends AbstractProcessor {
private Filer filer;
private Types typeUtils;
private Elements elementUtils;
private MybatisFlexConfig configuration;
@Override
public synchronized void init(ProcessingEnvironment processingEnvironment) {
super.init(processingEnvironment);
this.filer = processingEnvironment.getFiler();
this.elementUtils = processingEnvironment.getElementUtils();
this.typeUtils = processingEnvironment.getTypeUtils();
this.configuration = new MybatisFlexConfig(filer);
}
@ -174,10 +178,17 @@ public class MybatisFlexProcessor extends AbstractProcessor {
}
}
TableInfo tableInfo = new TableInfo();
tableInfo.setEntityName(entityClass);
tableInfo.setEntitySimpleName(entityClassName);
tableInfo.setTableName(table.value());
tableInfo.setSchema(table.schema());
tableInfo.setEntityComment(elementUtils.getDocComment(entityClassElement));
// 生成 TableDef 文件
String tableDefPackage = StrUtil.buildTableDefPackage(entityClass);
String tableDefClassName = entityClassName.concat(tableDefClassSuffix);
String tableDefContent = ContentBuilder.buildTableDef(table, entityClass, entityClassName, allInTablesEnable, tableDefPackage, tableDefClassName
String tableDefContent = ContentBuilder.buildTableDef(tableInfo, allInTablesEnable, tableDefPackage, tableDefClassName
, tableDefPropertiesNameStyle, tableDefInstanceSuffix, columnInfos, defaultColumns);
processGenClass(genPath, tableDefPackage, tableDefClassName, tableDefContent);
@ -185,7 +196,7 @@ public class MybatisFlexProcessor extends AbstractProcessor {
// 标记 entity 如果没有配置 Tables 生成位置 entity 位置为准
entityClassReference = entityClass;
// 构建 Tables 常量属性及其导包
ContentBuilder.buildTablesField(importBuilder, fieldBuilder, table, entityClass, entityClassName, tableDefClassSuffix, tableDefPropertiesNameStyle, tableDefInstanceSuffix);
ContentBuilder.buildTablesField(importBuilder, fieldBuilder, tableInfo, tableDefClassSuffix, tableDefPropertiesNameStyle, tableDefInstanceSuffix);
}
// 是否生成 Mapper 文件
@ -298,6 +309,7 @@ public class MybatisFlexProcessor extends AbstractProcessor {
columnInfo.setProperty(property);
columnInfo.setColumn(columnName);
columnInfo.setAlias(alias);
columnInfo.setComment(elementUtils.getDocComment(fieldElement));
columnInfos.add(columnInfo);

View File

@ -16,8 +16,8 @@
package com.mybatisflex.processor.builder;
import com.mybatisflex.annotation.Table;
import com.mybatisflex.processor.entity.ColumnInfo;
import com.mybatisflex.processor.entity.TableInfo;
import com.mybatisflex.processor.util.StrUtil;
import java.util.Collection;
@ -62,7 +62,7 @@ public class ContentBuilder {
/**
* 构建 TableDef 文件内容
*/
public static String buildTableDef(Table table, String entityClass, String entityClassName, boolean allInTablesEnable,
public static String buildTableDef(TableInfo tableInfo, boolean allInTablesEnable,
String tableDefPackage, String tableDefClassName,
String tableDefPropertiesNameStyle, String tableDefInstanceSuffix,
Collection<ColumnInfo> columnInfos, List<String> defaultColumns) {
@ -73,10 +73,22 @@ public class ContentBuilder {
content.append("// Auto generate by mybatis-flex, do not modify it.\n");
content.append("public class ").append(tableDefClassName).append(" extends TableDef {\n\n");
if (!allInTablesEnable) {
content.append(" public static final ").append(tableDefClassName).append(' ').append(StrUtil.buildFieldName(entityClassName.concat(tableDefInstanceSuffix != null ? tableDefInstanceSuffix.trim() : ""), tableDefPropertiesNameStyle))
String entityComment = tableInfo.getEntityComment();
if (!StrUtil.isBlank(entityComment)) {
content.append(" /**\n")
.append(" * ").append(entityComment.trim()).append("\n")
.append(" */\n");
}
content.append(" public static final ").append(tableDefClassName).append(' ').append(StrUtil.buildFieldName(tableInfo.getEntitySimpleName().concat(tableDefInstanceSuffix != null ? tableDefInstanceSuffix.trim() : ""), tableDefPropertiesNameStyle))
.append(" = new ").append(tableDefClassName).append("();\n\n");
}
columnInfos.forEach((columnInfo) -> {
String comment = columnInfo.getComment();
if (!StrUtil.isBlank(comment)) {
content.append(" /**\n")
.append(" * ").append(comment.trim()).append("\n")
.append(" */\n");
}
content.append(" public final QueryColumn ")
.append(StrUtil.buildFieldName(columnInfo.getProperty(), tableDefPropertiesNameStyle))
.append(" = new QueryColumn(this, \"")
@ -84,22 +96,28 @@ public class ContentBuilder {
if (columnInfo.getAlias() != null && columnInfo.getAlias().length > 0) {
content.append(", \"").append(columnInfo.getAlias()[0]).append("\"");
}
content.append(");\n");
content.append(");\n\n");
});
content.append("\n public final QueryColumn ").append(StrUtil.buildFieldName("allColumns", tableDefPropertiesNameStyle)).append(" = new QueryColumn(this, \"*\");\n");
content.append(" /**\n")
.append(" * 所有字段。\n")
.append(" */\n");
content.append(" public final QueryColumn ").append(StrUtil.buildFieldName("allColumns", tableDefPropertiesNameStyle)).append(" = new QueryColumn(this, \"*\");\n");
StringJoiner defaultColumnJoiner = new StringJoiner(", ");
columnInfos.forEach((columnInfo) -> {
if (defaultColumns.contains(columnInfo.getColumn())) {
defaultColumnJoiner.add(StrUtil.buildFieldName(columnInfo.getProperty(), tableDefPropertiesNameStyle));
}
});
content.append("\n /**\n")
.append(" * 默认字段,不包含逻辑删除或者 large 等字段。\n")
.append(" */\n");
content.append(" public final QueryColumn[] ").append(StrUtil.buildFieldName("defaultColumns", tableDefPropertiesNameStyle)).append(" = new QueryColumn[]{").append(defaultColumnJoiner).append("};\n\n");
String schema = !StrUtil.isBlank(table.schema())
? table.schema()
String schema = !StrUtil.isBlank(tableInfo.getSchema())
? tableInfo.getSchema()
: "";
String tableName = !StrUtil.isBlank(table.value())
? table.value()
: StrUtil.firstCharToLowerCase(entityClassName);
String tableName = !StrUtil.isBlank(tableInfo.getTableName())
? tableInfo.getTableName()
: StrUtil.firstCharToLowerCase(tableInfo.getEntitySimpleName());
content.append(" public ").append(tableDefClassName).append("() {\n")
.append(" super").append("(\"").append(schema).append("\", \"").append(tableName).append("\");\n")
.append(" }\n\n}\n");
@ -124,13 +142,19 @@ public class ContentBuilder {
/**
* 构建 Tables 文件常量属性
*/
public static void buildTablesField(StringBuilder importBuilder, StringBuilder fieldBuilder, Table table,
String entityClass, String entityClassName, String tableDefClassSuffix, String tableDefPropertiesNameStyle, String tableDefInstanceSuffix) {
String tableDefPackage = StrUtil.buildTableDefPackage(entityClass);
String tableDefClassName = entityClassName.concat(tableDefClassSuffix);
public static void buildTablesField(StringBuilder importBuilder, StringBuilder fieldBuilder, TableInfo tableInfo,
String tableDefClassSuffix, String tableDefPropertiesNameStyle, String tableDefInstanceSuffix) {
String tableDefPackage = StrUtil.buildTableDefPackage(tableInfo.getEntityName());
String tableDefClassName = tableInfo.getEntitySimpleName().concat(tableDefClassSuffix);
importBuilder.append("import ").append(tableDefPackage).append('.').append(tableDefClassName).append(";\n");
String entityComment = tableInfo.getEntityComment();
if (!StrUtil.isBlank(entityComment)) {
fieldBuilder.append(" /**\n")
.append(" * ").append(entityComment).append("\n")
.append(" */\n");
}
fieldBuilder.append(" public static final ").append(tableDefClassName).append(' ')
.append(StrUtil.buildFieldName(entityClassName.concat(tableDefInstanceSuffix != null ? tableDefInstanceSuffix.trim() : ""), tableDefPropertiesNameStyle))
.append(StrUtil.buildFieldName(tableInfo.getEntitySimpleName().concat(tableDefInstanceSuffix != null ? tableDefInstanceSuffix.trim() : ""), tableDefPropertiesNameStyle))
.append(" = new ").append(tableDefClassName).append("();\n");
}

View File

@ -31,6 +31,11 @@ public class ColumnInfo implements Comparable<ColumnInfo> {
*/
private String property;
/**
* 注释
*/
private String comment;
/**
* 列名
*/
@ -49,6 +54,14 @@ public class ColumnInfo implements Comparable<ColumnInfo> {
this.property = property;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public String getColumn() {
return column;
}
@ -90,4 +103,4 @@ public class ColumnInfo implements Comparable<ColumnInfo> {
return compare == 0 ? property.compareTo(o.property) : compare;
}
}
}