diff --git a/docs/zh/others/apt.md b/docs/zh/others/apt.md
index 2e5d9852..32f7a26d 100644
--- a/docs/zh/others/apt.md
+++ b/docs/zh/others/apt.md
@@ -17,17 +17,17 @@ MyBatis-Flex 使用了 APT(Annotation Processing Tool)技术,在项目编
| ------------------------------- | ------------------------ | -------------------------------------------------------- | ------------------------------------ |
| processor.enable | 全局启用apt开关 | true/false | true |
| processor.stopBubbling | 是否停止向上级合并配 | true/false | false |
-| processor.mappersGenerateEnable | 开启 Mapper 自动生成 | true/false | false |
| processor.genPath | APT 代码生成路径 | 合法的绝对或相对路径 | target/generated-sources/annotations |
-| processor.allInTables | 是否所有的类都生成在 Tables 类里 | true/false | false |
-| processor.tablesPackage | Tables 类名 | 合法的包名 | ${entityPackage}.table |
-| processor.tablesClassName | Tables 类名 | 合法的类名 | Tables |
-| processor.baseMapperClass | 自定义 Mapper 的父类 | 全路径类名 | com.mybatisflex.core.BaseMapper |
-| processor.mappersPackage | 自定义 Mapper 生成的包名 | 合法的包名 | ${entityPackage}.mapper |
+| processor.allInTables.enable | 是否所有的类都生成在 Tables 类里 | true/false | false |
+| processor.allInTables.tablesPackage | Tables 类名 | 合法的包名 | ${entityPackage}.table |
+| processor.allInTables.tablesClassName | Tables 类名 | 合法的类名 | Tables |
+| processor.mapper.generateEnable | 开启 Mapper 自动生成 | true/false | false |
+| processor.mapper.baseClass | 自定义 Mapper 的父类 | 全路径类名 | com.mybatisflex.core.BaseMapper |
+| processor.mapper.package | 自定义 Mapper 生成的包名 | 合法的包名 | ${entityPackage}.mapper |
| processor.tableDef.propertiesNameStyle | 生成辅助类的字段风格 | upperCase, lowerCase
upperCamelCase, lowerCamelCase | upperCase |
| processor.tableDef.instanceSuffix | 生成的表对应的变量后缀 | string | 空字符串 |
-| processor.tableDef.classSuffix | 生成的表对应的变量后缀 | string | 空字符串 |
-| processor.entity.ignoreSuffixes | 过滤 Entity 后缀 | string | - |
+| processor.tableDef.classSuffix | 生成的 TableDef 类的后缀 | string | TableDef |
+| processor.tableDef.ignoreEntitySuffixes | 过滤 Entity 后缀 | string | - |
diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java
index 7c081108..3d4f8b0e 100644
--- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java
+++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java
@@ -90,20 +90,21 @@ public class MybatisFlexProcessor extends AbstractProcessor {
@Override
public boolean process(Set extends TypeElement> annotations, RoundEnvironment roundEnv) {
if (!roundEnv.processingOver()) {
- System.out.println("mybatis flex processor run start...");
// 不启用 APT 功能
if ("false".equalsIgnoreCase(configuration.get(ConfigurationKey.ENABLE))) {
return true;
}
+ System.out.println("mybatis flex processor run start...");
+
// 是否所有的类常量都生成在 Tables 类里
- boolean allInTables = "true".equalsIgnoreCase(configuration.get(ConfigurationKey.ALL_IN_TABLES));
+ boolean allInTablesEnable = "true".equalsIgnoreCase(configuration.get(ConfigurationKey.ALL_IN_TABLES_ENABLE));
StringBuilder importBuilder;
StringBuilder fieldBuilder;
- if (allInTables) {
+ if (allInTablesEnable) {
importBuilder = new StringBuilder();
fieldBuilder = new StringBuilder();
} else {
@@ -113,15 +114,21 @@ public class MybatisFlexProcessor extends AbstractProcessor {
// 其他配置选项
String genPath = configuration.get(ConfigurationKey.GEN_PATH);
- String tablesPackage = configuration.get(ConfigurationKey.TABLES_PACKAGE);
- String mappersPackage = configuration.get(ConfigurationKey.MAPPERS_PACKAGE);
- String baseMapperClass = configuration.get(ConfigurationKey.BASE_MAPPER_CLASS);
- String tablesDefSuffix = configuration.get(ConfigurationKey.TABLES_DEF_SUFFIX);
- String tablesNameStyle = configuration.get(ConfigurationKey.TABLE_NAME_STYLE);
- String tablesClassName = configuration.get(ConfigurationKey.TABLES_CLASS_NAME);
- String mappersGenerateEnable = configuration.get(ConfigurationKey.MAPPERS_GENERATE_ENABLE);
- String[] entityIgnoreSuffixes = configuration.get(ConfigurationKey.IGNORE_SUFFIXES).split(",");
+ // all in Tables 配置
+ String allInTablesPackage = configuration.get(ConfigurationKey.ALL_IN_TABLES_PACKAGE);
+ String allInTablesClassName = configuration.get(ConfigurationKey.ALL_IN_TABLES_CLASS_NAME);
+
+ // mapper 配置
+ String mapperGenerateEnable = configuration.get(ConfigurationKey.MAPPER_GENERATE_ENABLE);
+ String mapperPackage = configuration.get(ConfigurationKey.MAPPER_PACKAGE);
+ String mapperBaseClass = configuration.get(ConfigurationKey.MAPPER_BASE_CLASS);
+
+ // tableDef 配置
+ String tableDefClassSuffix = configuration.get(ConfigurationKey.TABLE_DEF_CLASS_SUFFIX);
+ String tableDefInstanceSuffix = configuration.get(ConfigurationKey.TABLE_DEF_INSTANCE_SUFFIX);
+ String tableDefPropertiesNameStyle = configuration.get(ConfigurationKey.TABLE_DEF_PROPERTIES_NAME_STYLE);
+ String[] tableDefIgnoreEntitySuffixes = configuration.get(ConfigurationKey.TABLE_DEF_IGNORE_ENTITY_SUFFIXES).split(",");
// 如果不指定 Tables 生成包,那么 Tables 文件就会和最后一个 entity 文件在同一个包
String entityClassReference = null;
@@ -162,7 +169,7 @@ public class MybatisFlexProcessor extends AbstractProcessor {
String entityClassName = StrUtil.getClassName(entityClass);
// 处理 entity 后缀
- for (String entityIgnoreSuffix : entityIgnoreSuffixes) {
+ for (String entityIgnoreSuffix : tableDefIgnoreEntitySuffixes) {
if (entityClassName.endsWith(entityIgnoreSuffix.trim())) {
entityClassName = entityClassName.substring(0, entityClassName.length() - entityIgnoreSuffix.length());
break;
@@ -171,31 +178,32 @@ public class MybatisFlexProcessor extends AbstractProcessor {
// 生成 TableDef 文件
String tableDefPackage = StrUtil.buildTableDefPackage(entityClass);
- String tableDefClassName = entityClassName.concat("TableDef");
- String tableDefContent = ContentBuilder.buildTableDef(table, entityClass, entityClassName, allInTables, tableDefPackage, tableDefClassName, tablesNameStyle, tablesDefSuffix, columnInfoList, defaultColumns);
+ String tableDefClassName = entityClassName.concat(tableDefClassSuffix);
+ String tableDefContent = ContentBuilder.buildTableDef(table, entityClass, entityClassName, allInTablesEnable, tableDefPackage, tableDefClassName
+ , tableDefPropertiesNameStyle, tableDefInstanceSuffix, columnInfoList, defaultColumns);
processGenClass(genPath, tableDefPackage, tableDefClassName, tableDefContent);
- if (allInTables) {
+ if (allInTablesEnable) {
// 标记 entity 类,如果没有配置 Tables 生成位置,以 entity 位置为准
entityClassReference = entityClass;
// 构建 Tables 常量属性及其导包
- ContentBuilder.buildTablesField(importBuilder, fieldBuilder, table, entityClass, entityClassName, tablesNameStyle, tablesDefSuffix);
+ ContentBuilder.buildTablesField(importBuilder, fieldBuilder, table, entityClass, entityClassName, tableDefClassSuffix, tableDefPropertiesNameStyle, tableDefInstanceSuffix);
}
// 是否生成 Mapper 文件
- if ("true".equalsIgnoreCase(mappersGenerateEnable) && table.mapperGenerateEnable()) {
- String realMapperPackage = StrUtil.isBlank(mappersPackage) ? StrUtil.buildMapperPackage(entityClass) : mappersPackage;
+ if ("true".equalsIgnoreCase(mapperGenerateEnable) && table.mapperGenerateEnable()) {
+ String realMapperPackage = StrUtil.isBlank(mapperPackage) ? StrUtil.buildMapperPackage(entityClass) : mapperPackage;
String mapperClassName = entityClassName.concat("Mapper");
- String mapperClassContent = ContentBuilder.buildMapper(entityClass, entityClassName, realMapperPackage, mapperClassName, baseMapperClass);
+ String mapperClassContent = ContentBuilder.buildMapper(entityClass, entityClassName, realMapperPackage, mapperClassName, mapperBaseClass);
processGenClass(genPath, realMapperPackage, mapperClassName, mapperClassContent);
}
// handle NPE, ensure TableDef already generate.
- if (index == size && allInTables) {
+ if (index == size && allInTablesEnable) {
// 生成 Tables 文件
- String realTablesPackage = StrUtil.isBlank(tablesPackage) ? StrUtil.buildTableDefPackage(entityClassReference) : tablesPackage;
- String realTablesClassName = StrUtil.isBlank(tablesClassName) ? "Tables" : tablesClassName;
- String tablesContent = ContentBuilder.buildTables(importBuilder, fieldBuilder, realTablesPackage, tablesClassName);
+ String realTablesPackage = StrUtil.isBlank(allInTablesPackage) ? StrUtil.buildTableDefPackage(entityClassReference) : allInTablesPackage;
+ String realTablesClassName = StrUtil.isBlank(allInTablesClassName) ? "Tables" : allInTablesClassName;
+ String tablesContent = ContentBuilder.buildTables(importBuilder, fieldBuilder, realTablesPackage, allInTablesClassName);
processGenClass(genPath, realTablesPackage, realTablesClassName, tablesContent);
}
}
@@ -323,7 +331,6 @@ public class MybatisFlexProcessor extends AbstractProcessor {
}
-
private void processGenClass(String genBasePath, String genPackageName, String className, String genContent) {
Writer writer = null;
try {
diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/builder/ContentBuilder.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/builder/ContentBuilder.java
index 264c6973..a42651e9 100644
--- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/builder/ContentBuilder.java
+++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/builder/ContentBuilder.java
@@ -53,9 +53,9 @@ public class ContentBuilder {
/**
* 构建 TableDef 文件内容。
*/
- public static String buildTableDef(Table table, String entityClass, String entityClassName, boolean allInTables,
+ public static String buildTableDef(Table table, String entityClass, String entityClassName, boolean allInTablesEnable,
String tableDefPackage, String tableDefClassName,
- String tablesNameStyle, String tablesDefSuffix,
+ String tableDefPropertiesNameStyle, String tableDefInstanceSuffix,
List columnInfoList, List defaultColumns) {
StringBuilder content = new StringBuilder("package ");
content.append(tableDefPackage).append(";\n\n");
@@ -63,19 +63,19 @@ public class ContentBuilder {
content.append("import com.mybatisflex.core.table.TableDef;\n\n");
content.append("// Auto generate by mybatis-flex, do not modify it.\n");
content.append("public class ").append(tableDefClassName).append(" extends TableDef {\n\n");
- if (!allInTables) {
+ 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(tablesDefSuffix != null ? tablesDefSuffix.trim() : ""), tablesNameStyle))
+ 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");
}
columnInfoList.forEach((columnInfo) -> {
content.append(" public QueryColumn ")
- .append(StrUtil.buildFieldName(columnInfo.getProperty(), tablesNameStyle))
+ .append(StrUtil.buildFieldName(columnInfo.getProperty(), tableDefPropertiesNameStyle))
.append(" = new QueryColumn(this, \"")
.append(columnInfo.getColumn()).append("\"");
if (columnInfo.getAlias() != null && columnInfo.getAlias().length > 0) {
@@ -83,14 +83,14 @@ public class ContentBuilder {
}
content.append(");\n");
});
- content.append(" public QueryColumn ").append(StrUtil.buildFieldName("allColumns", tablesNameStyle)).append(" = new QueryColumn(this, \"*\");\n");
+ content.append(" public QueryColumn ").append(StrUtil.buildFieldName("allColumns", tableDefPropertiesNameStyle)).append(" = new QueryColumn(this, \"*\");\n");
StringJoiner defaultColumnJoiner = new StringJoiner(", ");
columnInfoList.forEach((columnInfo) -> {
if (defaultColumns.contains(columnInfo.getColumn())) {
- defaultColumnJoiner.add(StrUtil.buildFieldName(columnInfo.getProperty(), tablesNameStyle));
+ defaultColumnJoiner.add(StrUtil.buildFieldName(columnInfo.getProperty(), tableDefPropertiesNameStyle));
}
});
- content.append(" public QueryColumn[] ").append(StrUtil.buildFieldName("defaultColumns", tablesNameStyle)).append(" = new QueryColumn[]{").append(defaultColumnJoiner).append("};\n\n");
+ 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")
.append(" }\n\n}\n");
@@ -116,9 +116,9 @@ public class ContentBuilder {
* 构建 Tables 文件常量属性。
*/
public static void buildTablesField(StringBuilder importBuilder, StringBuilder fieldBuilder, Table table,
- String entityClass, String entityClassName, String tablesNameStyle, String tablesDefSuffix) {
+ String entityClass, String entityClassName, String tableDefClassSuffix, String tableDefPropertiesNameStyle, String tableDefInstanceSuffix) {
String tableDefPackage = StrUtil.buildTableDefPackage(entityClass);
- String tableDefClassName = entityClassName.concat("TableDef");
+ String tableDefClassName = entityClassName.concat(tableDefClassSuffix);
importBuilder.append("import ").append(tableDefPackage).append('.').append(tableDefClassName).append(";\n");
String schema = !StrUtil.isBlank(table.schema())
? table.schema()
@@ -127,7 +127,7 @@ public class ContentBuilder {
? table.value()
: StrUtil.firstCharToLowerCase(entityClassName);
fieldBuilder.append(" public static final ").append(tableDefClassName).append(' ')
- .append(StrUtil.buildFieldName(entityClassName.concat(tablesDefSuffix != null ? tablesDefSuffix.trim() : ""), tablesNameStyle))
+ .append(StrUtil.buildFieldName(entityClassName.concat(tableDefInstanceSuffix != null ? tableDefInstanceSuffix.trim() : ""), tableDefPropertiesNameStyle))
.append(" = new ").append(tableDefClassName).append("(\"").append(schema).append("\", \"").append(tableName).append("\");\n");
}
diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/config/ConfigurationKey.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/config/ConfigurationKey.java
index 2320a80e..a43cb96c 100644
--- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/config/ConfigurationKey.java
+++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/config/ConfigurationKey.java
@@ -34,50 +34,59 @@ public enum ConfigurationKey {
*/
GEN_PATH("processor.genPath", ""),
- /**
- * 自定义 Tables 生成的包名。
- */
- TABLES_PACKAGE("processor.tablesPackage", null),
-
- /**
- * 自定义 Mapper 的父类。
- */
- BASE_MAPPER_CLASS("processor.baseMapperClass", "com.mybatisflex.core.BaseMapper"),
-
- /**
- * 开启 Mapper 自动生成。
- */
- MAPPERS_GENERATE_ENABLE("processor.mappersGenerateEnable", "false"),
-
- /**
- * 自定义 Mapper 生成的包名。
- */
- MAPPERS_PACKAGE("processor.mappersPackage", null),
/**
* 是否所有的类都生成在 Tables 类里。
*/
- ALL_IN_TABLES("processor.allInTables", "false"),
+ ALL_IN_TABLES_ENABLE("processor.allInTables.enable", "false"),
/**
* Tables 类名。
*/
- TABLES_CLASS_NAME("processor.tablesClassName", "Tables"),
+ ALL_IN_TABLES_CLASS_NAME("processor.allInTables.className", "Tables"),
/**
- * 生成辅助类的字段风格。
+ * 自定义 Tables 生成的包名。
*/
- TABLE_NAME_STYLE("processor.tablesNameStyle", "upperCase"),
+ ALL_IN_TABLES_PACKAGE("processor.allInTables.package", null),
+
+
+ /**
+ * 开启 Mapper 自动生成。
+ */
+ MAPPER_GENERATE_ENABLE("processor.mapper.generateEnable", "false"),
+
+ /**
+ * 自定义 Mapper 的父类。
+ */
+ MAPPER_BASE_CLASS("processor.mapper.baseClass", "com.mybatisflex.core.BaseMapper"),
+
+ /**
+ * 自定义 Mapper 生成的包名。
+ */
+ MAPPER_PACKAGE("processor.mapper.package", null),
+
+
+ /**
+ * 生成的 Class 的后缀。
+ */
+ TABLE_DEF_CLASS_SUFFIX("processor.tableDef.classSuffix", "TableDef"),
/**
* 生成的表对应的变量后缀。
*/
- TABLES_DEF_SUFFIX("processor.tablesDefSuffix", ""),
+ TABLE_DEF_INSTANCE_SUFFIX("processor.tableDef.instanceSuffix", ""),
+
+ /**
+ * 生成辅助类的字段风格。
+ */
+ TABLE_DEF_PROPERTIES_NAME_STYLE("processor.tableDef.propertiesNameStyle", "upperCase"),
/**
* 过滤 Entity 后缀。
*/
- IGNORE_SUFFIXES("processor.entity.ignoreSuffixes", "");
+ TABLE_DEF_IGNORE_ENTITY_SUFFIXES("processor.tableDef.ignoreEntitySuffixes", "");
+
private final String configKey;
private final String defaultValue;
diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/util/StrUtil.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/util/StrUtil.java
index 7447ecea..e314eba9 100644
--- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/util/StrUtil.java
+++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/util/StrUtil.java
@@ -75,12 +75,12 @@ public class StrUtil {
return str;
}
- public static String buildFieldName(String name, String style) {
- if ("upperCase".equalsIgnoreCase(style)) {
+ public static String buildFieldName(String name, String tableDefPropertiesNameStyle) {
+ if ("upperCase".equalsIgnoreCase(tableDefPropertiesNameStyle)) {
return camelToUnderline(name).toUpperCase();
- } else if ("lowerCase".equalsIgnoreCase(style)) {
+ } else if ("lowerCase".equalsIgnoreCase(tableDefPropertiesNameStyle)) {
return camelToUnderline(name).toLowerCase();
- } else if ("upperCamelCase".equalsIgnoreCase(style)) {
+ } else if ("upperCamelCase".equalsIgnoreCase(tableDefPropertiesNameStyle)) {
return firstCharToUpperCase(name);
} else {
//lowerCamelCase
diff --git a/mybatis-flex-test/mybatis-flex-spring-boot-test/mybatis-flex.config b/mybatis-flex-test/mybatis-flex-spring-boot-test/mybatis-flex.config
index 7caf83f7..e279d35b 100644
--- a/mybatis-flex-test/mybatis-flex-spring-boot-test/mybatis-flex.config
+++ b/mybatis-flex-test/mybatis-flex-spring-boot-test/mybatis-flex.config
@@ -1,5 +1,5 @@
-processor.mappersGenerateEnable=true
-processor.entity.ignoreSuffixes=Entity
-#processor.allInTables=true
-processor.baseMapperClass=com.mybatisflex.test.mapper.MyBaseMapper
+processor.mapper.generateEnable=true
+processor.tableDef.ignoreEntitySuffixes=Entity
+#processor.allInTables.enable=true
+processor.mapper.baseClass=com.mybatisflex.test.mapper.MyBaseMapper
diff --git a/mybatis-flex-test/mybatis-flex-spring-cloud-test/mybatis-flex.config b/mybatis-flex-test/mybatis-flex-spring-cloud-test/mybatis-flex.config
index 812235c5..8696cac6 100644
--- a/mybatis-flex-test/mybatis-flex-spring-cloud-test/mybatis-flex.config
+++ b/mybatis-flex-test/mybatis-flex-spring-cloud-test/mybatis-flex.config
@@ -1,2 +1,2 @@
-processor.mappersGenerateEnable=true
+processor.mapper.generateEnable=true
diff --git a/mybatis-flex-test/mybatis-flex-spring-test/mybatis-flex.config b/mybatis-flex-test/mybatis-flex-spring-test/mybatis-flex.config
index f84786d9..8c885482 100644
--- a/mybatis-flex-test/mybatis-flex-spring-test/mybatis-flex.config
+++ b/mybatis-flex-test/mybatis-flex-spring-test/mybatis-flex.config
@@ -1,2 +1,2 @@
-processor.mappersGenerateEnable = false
-processor.allInTables = true
\ No newline at end of file
+processor.mapper.generateEnable = false
+processor.allInTables.enable = true
\ No newline at end of file