fix: 如果实体类在多个包,自动生成辅助类仍在一个包。

This commit is contained in:
Suomm 2023-06-16 18:32:27 +08:00
parent a54b1709f6
commit 5407a3384e

View File

@ -1,4 +1,4 @@
/**
/*
* Copyright (c) 2022-2023, Mybatis-Flex (fuhai999@gmail.com).
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
@ -41,6 +41,7 @@ import java.sql.Timestamp;
import java.time.*;
import java.time.chrono.JapaneseDate;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
@ -162,23 +163,14 @@ public class QueryEntityProcessor extends AbstractProcessor {
String[] entityIgnoreSuffixes = props.getProperties().getProperty("processor.entity.ignoreSuffixes", "").split(",");
StringBuilder guessPackage = new StringBuilder();
AtomicReference<String> entityClassName = new AtomicReference<>();
StringBuilder tablesContent = new StringBuilder();
roundEnv.getElementsAnnotatedWith(Table.class).forEach((Consumer<Element>) entityClassElement -> {
Table table = entityClassElement.getAnnotation(Table.class);
//init genPackage
if ((genTablesPackage == null || genTablesPackage.trim().length() == 0)
&& guessPackage.length() == 0) {
String entityClassName = entityClassElement.toString();
if (!entityClassName.contains(".")) {
guessPackage.append("table");// = "table";
} else {
guessPackage.append(entityClassName.substring(0, entityClassName.lastIndexOf(".")) + ".table");
}
}
entityClassName.set(entityClassElement.toString());
String schema = table != null && table.value().trim().length() != 0
? table.schema()
@ -216,7 +208,7 @@ public class QueryEntityProcessor extends AbstractProcessor {
}
//每一个 entity 生成一个独立的文件
else {
String realGenPackage = genTablesPackage == null || genTablesPackage.trim().length() == 0 ? guessPackage.toString() : genTablesPackage;
String realGenPackage = isEmpty(genMappersPackage) ? guessTablesPackage(entityClassName.get()) : genTablesPackage;
String content = buildTablesClass(entitySimpleName, schema, tableName, propertyAndColumns, defaultColumns, tablesNameStyle
, tablesDefSuffix, realGenPackage, allInTables);
genClass(genPath, realGenPackage, entitySimpleName + "TableDef", content);
@ -224,14 +216,13 @@ public class QueryEntityProcessor extends AbstractProcessor {
//是否开启 mapper 生成功能
if ("true".equalsIgnoreCase(mappersGenerateEnable) && table.mapperGenerateEnable()) {
String realMapperPackage = genMappersPackage == null || genMappersPackage.trim().length() == 0
? guessMapperPackage(entityClassElement.toString()) : genMappersPackage;
String realMapperPackage = isEmpty(genMappersPackage) ? guessMapperPackage(entityClassElement.toString()) : genMappersPackage;
genMapperClass(genPath, realMapperPackage, entityClassElement.toString(), baseMapperClass, entitySimpleName);
}
});
if (allInTables && tablesContent.length() > 0) {
String realGenPackage = genTablesPackage == null || genTablesPackage.trim().length() == 0 ? guessPackage.toString() : genTablesPackage;
String realGenPackage = isEmpty(genTablesPackage) ? guessTablesPackage(entityClassName.get()) : genTablesPackage;
genTablesClass(genPath, realGenPackage, className, tablesContent.toString());
}
@ -240,6 +231,20 @@ public class QueryEntityProcessor extends AbstractProcessor {
return false;
}
private static boolean isEmpty(String str) {
return str == null || str.trim().length() == 0;
}
private String guessTablesPackage(String entityClassName) {
StringBuilder guessPackage = new StringBuilder();
if (!entityClassName.contains(".")) {
guessPackage.append("table");// = "table";
} else {
guessPackage.append(entityClassName, 0, entityClassName.lastIndexOf(".")).append(".table");
}
return guessPackage.toString();
}
private void fillPropertyAndColumns(Map<String, String> propertyAndColumns, List<String> defaultColumns, TypeElement classElement, boolean camelToUnderline) {
for (Element fieldElement : classElement.getEnclosedElements()) {