!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(tableDefClassName = table.buildTableDefClassName())
#set(schema = table.schema == null ? "" : table.schema)
package #(packageConfig.tableDefPackage); package #(packageConfig.tableDefPackage);
import com.mybatisflex.core.query.QueryColumn; import com.mybatisflex.core.query.QueryColumn;
@ -12,17 +13,17 @@ import com.mybatisflex.core.table.TableDef;
*/ */
public class #(tableDefClassName) extends 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) #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 #end
public QueryColumn #(tableDefConfig.buildFieldName("allColumns")) = new QueryColumn(this, "*"); public final 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("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) { public #(tableDefClassName)() {
super(tableName); super("#(schema)", "#(table.name)");
} }
} }

View File

@ -149,7 +149,7 @@ public class MybatisFlexProcessor extends AbstractProcessor {
assert table != null; assert table != null;
// 类属性 fix: https://gitee.com/mybatis-flex/mybatis-flex/issues/I7I08X // 类属性 fix: https://gitee.com/mybatis-flex/mybatis-flex/issues/I7I08X
Set<ColumnInfo> columnInfos = new HashSet<>(); Set<ColumnInfo> columnInfos = new TreeSet<>();
// 默认查询的属性 isLarge 字段 // 默认查询的属性 isLarge 字段
List<String> defaultColumns = new ArrayList<>(); 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("// Auto generate by mybatis-flex, do not modify it.\n");
content.append("public class ").append(tableDefClassName).append(" extends TableDef {\n\n"); content.append("public class ").append(tableDefClassName).append(" extends TableDef {\n\n");
if (!allInTablesEnable) { 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)) 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) -> { columnInfos.forEach((columnInfo) -> {
content.append(" public QueryColumn ") content.append(" public final QueryColumn ")
.append(StrUtil.buildFieldName(columnInfo.getProperty(), tableDefPropertiesNameStyle)) .append(StrUtil.buildFieldName(columnInfo.getProperty(), tableDefPropertiesNameStyle))
.append(" = new QueryColumn(this, \"") .append(" = new QueryColumn(this, \"")
.append(columnInfo.getColumn()).append("\""); .append(columnInfo.getColumn()).append("\"");
@ -84,16 +78,22 @@ public class ContentBuilder {
} }
content.append(");\n"); 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(", "); StringJoiner defaultColumnJoiner = new StringJoiner(", ");
columnInfos.forEach((columnInfo) -> { columnInfos.forEach((columnInfo) -> {
if (defaultColumns.contains(columnInfo.getColumn())) { if (defaultColumns.contains(columnInfo.getColumn())) {
defaultColumnJoiner.add(StrUtil.buildFieldName(columnInfo.getProperty(), tableDefPropertiesNameStyle)); 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 final 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") String schema = !StrUtil.isBlank(table.schema())
.append(" super(schema, tableName);\n") ? 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"); .append(" }\n\n}\n");
return content.toString(); return content.toString();
} }
@ -107,8 +107,8 @@ public class ContentBuilder {
importBuilder.toString() + importBuilder.toString() +
"\n// Auto generate by mybatis-flex, do not modify it.\n" + "\n// Auto generate by mybatis-flex, do not modify it.\n" +
"public class " + tablesClassName + " {\n\n" + "public class " + tablesClassName + " {\n\n" +
" private " + tablesClassName + "() {\n" + " private " + tablesClassName + "() {\n" +
" }\n\n" + " }\n\n" +
fieldBuilder.toString() + fieldBuilder.toString() +
"\n}\n"; "\n}\n";
} }
@ -121,15 +121,9 @@ public class ContentBuilder {
String tableDefPackage = StrUtil.buildTableDefPackage(entityClass); String tableDefPackage = StrUtil.buildTableDefPackage(entityClass);
String tableDefClassName = entityClassName.concat(tableDefClassSuffix); String tableDefClassName = entityClassName.concat(tableDefClassSuffix);
importBuilder.append("import ").append(tableDefPackage).append('.').append(tableDefClassName).append(";\n"); importBuilder.append("import ").append(tableDefPackage).append('.').append(tableDefClassName).append(";\n");
String schema = !StrUtil.isBlank(table.schema()) fieldBuilder.append(" public static final ").append(tableDefClassName).append(' ')
? table.schema()
: "";
String tableName = !StrUtil.isBlank(table.value())
? table.value()
: StrUtil.firstCharToLowerCase(entityClassName);
fieldBuilder.append(" public static final ").append(tableDefClassName).append(' ')
.append(StrUtil.buildFieldName(entityClassName.concat(tableDefInstanceSuffix != null ? tableDefInstanceSuffix.trim() : ""), tableDefPropertiesNameStyle)) .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 王帅 * @author 王帅
* @since 2023-07-01 * @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; 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;
}
} }