!113 优化辅助类

Merge pull request !113 from 王帅/main
This commit is contained in:
Michael Yang 2023-07-07 14:00:46 +00:00 committed by Gitee
commit 126a99ba6a
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
4 changed files with 33 additions and 30 deletions

View File

@ -1,4 +1,5 @@
#set(tableDefClassName = table.buildTableDefClassName())
#set(schema = table.schema == null ? "" : table.schema)
package #(packageConfig.tableDefPackage);
import com.mybatisflex.core.query.QueryColumn;
@ -12,17 +13,17 @@ import com.mybatisflex.core.table.TableDef;
*/
public class #(tableDefClassName) extends TableDef {
public static final #(tableDefClassName) #(tableDefConfig.buildFieldName(table.buildEntityClassName() + tableDefConfig.instanceSuffix)) = new #(tableDefClassName)("#(table.name)");
public static final #(tableDefClassName) #(tableDefConfig.buildFieldName(table.buildEntityClassName() + tableDefConfig.instanceSuffix)) = new #(tableDefClassName)();
#for(column: table.columns)
public QueryColumn #(tableDefConfig.buildFieldName(column.property)) = new QueryColumn(this, "#(column.name)");
public final QueryColumn #(tableDefConfig.buildFieldName(column.property)) = new QueryColumn(this, "#(column.name)");
#end
public QueryColumn #(tableDefConfig.buildFieldName("allColumns")) = new QueryColumn(this, "*");
public QueryColumn[] #(tableDefConfig.buildFieldName("defaultColumns")) = new QueryColumn[]{#for(column: table.columns) #if(!column.isLarge())#(tableDefConfig.buildFieldName(column.property))#if(for.index + 1 != for.size),#end#end#end};
public final QueryColumn #(tableDefConfig.buildFieldName("allColumns")) = new QueryColumn(this, "*");
public final QueryColumn[] #(tableDefConfig.buildFieldName("defaultColumns")) = new QueryColumn[]{#for(column: table.columns)#if(!column.isLarge())#(tableDefConfig.buildFieldName(column.property))#if(for.index + 1 != for.size), #end#end#end};
public #(tableDefClassName)(String tableName) {
super(tableName);
public #(tableDefClassName)() {
super("#(schema)", "#(table.name)");
}
}

View File

@ -149,7 +149,7 @@ public class MybatisFlexProcessor extends AbstractProcessor {
assert table != null;
// 类属性 fix: https://gitee.com/mybatis-flex/mybatis-flex/issues/I7I08X
Set<ColumnInfo> columnInfos = new HashSet<>();
Set<ColumnInfo> columnInfos = new TreeSet<>();
// 默认查询的属性 isLarge 字段
List<String> defaultColumns = new ArrayList<>();

View File

@ -65,17 +65,11 @@ 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) {
String schema = !StrUtil.isBlank(table.schema())
? table.schema()
: "";
String tableName = !StrUtil.isBlank(table.value())
? table.value()
: StrUtil.firstCharToLowerCase(entityClassName);
content.append(" public static final ").append(tableDefClassName).append(' ').append(StrUtil.buildFieldName(entityClassName.concat(tableDefInstanceSuffix != null ? tableDefInstanceSuffix.trim() : ""), tableDefPropertiesNameStyle))
.append(" = new ").append(tableDefClassName).append("(\"").append(schema).append("\", \"").append(tableName).append("\");\n\n");
.append(" = new ").append(tableDefClassName).append("();\n\n");
}
columnInfos.forEach((columnInfo) -> {
content.append(" public QueryColumn ")
content.append(" public final QueryColumn ")
.append(StrUtil.buildFieldName(columnInfo.getProperty(), tableDefPropertiesNameStyle))
.append(" = new QueryColumn(this, \"")
.append(columnInfo.getColumn()).append("\"");
@ -84,16 +78,22 @@ public class ContentBuilder {
}
content.append(");\n");
});
content.append(" public QueryColumn ").append(StrUtil.buildFieldName("allColumns", tableDefPropertiesNameStyle)).append(" = new QueryColumn(this, \"*\");\n");
content.append("\n 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(" public QueryColumn[] ").append(StrUtil.buildFieldName("defaultColumns", tableDefPropertiesNameStyle)).append(" = new QueryColumn[]{").append(defaultColumnJoiner).append("};\n\n");
content.append(" public ").append(tableDefClassName).append("(String schema, String tableName) {\n")
.append(" super(schema, tableName);\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 tableName = !StrUtil.isBlank(table.value())
? table.value()
: StrUtil.firstCharToLowerCase(entityClassName);
content.append(" public ").append(tableDefClassName).append("() {\n")
.append(" super").append("(\"").append(schema).append("\", \"").append(tableName).append("\");\n")
.append(" }\n\n}\n");
return content.toString();
}
@ -107,8 +107,8 @@ public class ContentBuilder {
importBuilder.toString() +
"\n// Auto generate by mybatis-flex, do not modify it.\n" +
"public class " + tablesClassName + " {\n\n" +
" private " + tablesClassName + "() {\n" +
" }\n\n" +
" private " + tablesClassName + "() {\n" +
" }\n\n" +
fieldBuilder.toString() +
"\n}\n";
}
@ -121,15 +121,9 @@ public class ContentBuilder {
String tableDefPackage = StrUtil.buildTableDefPackage(entityClass);
String tableDefClassName = entityClassName.concat(tableDefClassSuffix);
importBuilder.append("import ").append(tableDefPackage).append('.').append(tableDefClassName).append(";\n");
String schema = !StrUtil.isBlank(table.schema())
? table.schema()
: "";
String tableName = !StrUtil.isBlank(table.value())
? table.value()
: StrUtil.firstCharToLowerCase(entityClassName);
fieldBuilder.append(" public static final ").append(tableDefClassName).append(' ')
fieldBuilder.append(" public static final ").append(tableDefClassName).append(' ')
.append(StrUtil.buildFieldName(entityClassName.concat(tableDefInstanceSuffix != null ? tableDefInstanceSuffix.trim() : ""), tableDefPropertiesNameStyle))
.append(" = new ").append(tableDefClassName).append("(\"").append(schema).append("\", \"").append(tableName).append("\");\n");
.append(" = new ").append(tableDefClassName).append("();\n");
}
}

View File

@ -24,7 +24,7 @@ import java.util.Objects;
* @author 王帅
* @since 2023-07-01
*/
public class ColumnInfo {
public class ColumnInfo implements Comparable<ColumnInfo> {
/**
* 属性名
@ -82,4 +82,12 @@ public class ColumnInfo {
return property != null ? property.hashCode() : 0;
}
@Override
public int compareTo(ColumnInfo o) {
// 先根据属性长度排序属性名短的在上
int compare = Integer.compare(property.length(), o.property.length());
// 属性名长度一样再按字母排序
return compare == 0 ? property.compareTo(o.property) : compare;
}
}