diff --git a/plugin/mybatis-plus-join-processor/pom.xml b/plugin/mybatis-plus-join-processor/pom.xml
index 2b89d99..6ec0127 100644
--- a/plugin/mybatis-plus-join-processor/pom.xml
+++ b/plugin/mybatis-plus-join-processor/pom.xml
@@ -109,25 +109,6 @@
-
- org.apache.maven.plugins
- maven-site-plugin
- 4.0.0-M14
-
- default,es,ja,fr,zh_CN,ko
-
-
-
- org.jacoco
- jacoco-maven-plugin
- 0.8.12
-
-
- com.github.yulichang.processor.ognl.*
- com.github.yulichang.processor.javassist.*
-
-
-
\ No newline at end of file
diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java
index a0a136e..6e18b65 100644
--- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java
+++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java
@@ -56,13 +56,35 @@ public class EntityProcessor extends AbstractProcessor {
@Override
public boolean process(Set extends TypeElement> annotations, RoundEnvironment roundEnv) {
if (!roundEnv.processingOver()) {
- TypeElement table = annotations.stream().filter(i -> i.toString().equals(TABLE)).findFirst().orElse(null);
- if (table != null) {
+ Set extends Element> tables = roundEnv.getRootElements().stream().filter(i -> {
+ List extends AnnotationMirror> mirrors = i.getAnnotationMirrors();
+ if (mirrors != null && !mirrors.isEmpty()) {
+ if (mirrors.stream().anyMatch(m -> m.getAnnotationType().toString().equals(TABLE))) {
+ return true;
+ }
+ if (StringUtil.isNotEmpty(globalConf.getScanAnno())) {
+ if (mirrors.stream().anyMatch(m -> m.getAnnotationType().toString().equals(globalConf.getScanAnno()))) {
+ return true;
+ }
+ }
+ }
+ if (StringUtil.isNotEmpty(globalConf.getScanPackage())) {
+ if (i.getKind() != ElementKind.CLASS) {
+ return false;
+ }
+ if (i.getModifiers().contains(Modifier.ABSTRACT)) {
+ return false;
+ }
+ String pkg = elementUtils.getPackageOf(i).getQualifiedName().toString();
+ String[] scanPackages = globalConf.getScanPackage().split(",");
+ return Arrays.stream(scanPackages).anyMatch(s -> StringUtil.matches(pkg, s));
+ }
+ return false;
+ }).collect(Collectors.toSet());
+ if (!tables.isEmpty()) {
note("mybatis plus join processor start");
- Set extends Element> tables = roundEnv.getElementsAnnotatedWith(table);
tables.stream().filter(f -> f instanceof TypeElement)
- .map(f -> (TypeElement) f).map(this::createColumn)
- .filter(Objects::nonNull).filter(TableInfo::isGenTables)
+ .map(f -> (TypeElement) f).map(this::createColumn).filter(TableInfo::isGenTables)
.collect(Collectors.groupingBy(TableInfo::getTagTablesPackageName))
.forEach(this::createTables);
}
@@ -75,6 +97,9 @@ public class EntityProcessor extends AbstractProcessor {
public Set getSupportedAnnotationTypes() {
Set supportedAnnotationTypes = new HashSet<>();
supportedAnnotationTypes.add(TABLE);
+ if (StringUtil.isNotEmpty(globalConf.getScanAnno())) {
+ supportedAnnotationTypes.add(globalConf.getScanAnno());
+ }
return supportedAnnotationTypes;
}
@@ -89,10 +114,7 @@ public class EntityProcessor extends AbstractProcessor {
private TableInfo createColumn(TypeElement element) {
AnnotationMirror tb = element.getAnnotationMirrors().stream().filter(a ->
a.getAnnotationType().asElement().toString().equals(TABLE)).findFirst().orElse(null);
- if (tb == null) {
- return null;
- }
- Conf conf = Conf.getConf(globalConf, tb.getElementValues());
+ Conf conf = Optional.ofNullable(tb).map(t -> Conf.getConf(globalConf, t.getElementValues())).orElse(globalConf);
TableInfo tableInfo = new TableInfo(conf, element.toString(), element.getSimpleName().toString());
tableInfo.setClassPackage(elementUtils.getPackageOf(element).getQualifiedName().toString());
tableInfo.setClassComment(elementUtils.getDocComment(element));
diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java
index d909bbf..cc92bec 100644
--- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java
+++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java
@@ -23,6 +23,9 @@ public class Conf {
private String tablesClassName = "%S";
private boolean cache = true;
+ private String scanAnno = "";
+ private String scanPackage = "";
+
private boolean initFlag = false;
private Conf(Conf conf) {
@@ -33,6 +36,9 @@ public class Conf {
this.tablesClassName = conf.tablesClassName;
this.initFlag = conf.initFlag;
this.cache = conf.cache;
+
+ this.scanAnno = conf.scanAnno;
+ this.scanPackage = conf.scanPackage;
}
@@ -75,6 +81,8 @@ public class Conf {
this.tablasClassPackage = properties.getOrDefault("tablasClassPackage", this.tablasClassPackage).toString();
this.tablesClassName = properties.getOrDefault("tablesClassName", this.tablesClassName).toString();
this.cache = Boolean.parseBoolean(properties.getOrDefault("cache", this.cache).toString());
+ this.scanAnno = properties.getOrDefault("scanAnno", this.scanAnno).toString();
+ this.scanPackage = properties.getOrDefault("scanPackage", this.scanPackage).toString();
}
public static Conf getConf(Conf globalConf, Map extends ExecutableElement, ? extends AnnotationValue> elementMap) {
@@ -134,6 +142,14 @@ public class Conf {
this.cache = cache;
}
+ public String getScanAnno() {
+ return scanAnno;
+ }
+
+ public String getScanPackage() {
+ return scanPackage;
+ }
+
public enum ConfItem {
className("value", (c, v) -> c.setClassName(v.toString())),
packageName("classPackage", (c, v) -> c.setClassPackage(v.toString())),
@@ -165,6 +181,9 @@ public class Conf {
", genTables=" + genTables +
", tablasClassPackage='" + tablasClassPackage + '\'' +
", tablesClassName='" + tablesClassName + '\'' +
+ ", cache=" + cache +
+ ", scanAnno='" + scanAnno + '\'' +
+ ", scanPackage='" + scanPackage + '\'' +
", initFlag=" + initFlag +
'}';
}
diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/utils/StringUtil.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/utils/StringUtil.java
index 834fded..ca0ebfa 100644
--- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/utils/StringUtil.java
+++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/utils/StringUtil.java
@@ -1,5 +1,8 @@
package com.github.yulichang.processor.utils;
+import java.util.Arrays;
+import java.util.stream.Collectors;
+
public final class StringUtil {
public static boolean isEmpty(String str) {
@@ -16,4 +19,20 @@ public final class StringUtil {
}
return fullName.substring(fullName.lastIndexOf(".") + 1);
}
+
+ public static boolean matches(String packageName, String packageRegex) {
+ if (packageRegex.lastIndexOf("*") != -1) {
+ String regex = Arrays.stream(packageRegex.split("\\.")).map(r -> {
+ if (r.equals("**")) {
+ return "[A-Za-z0-9_.]*";
+ } else if (r.equals("*")) {
+ return "\\w*";
+ } else {
+ return r;
+ }
+ }).collect(Collectors.joining("\\."));
+ return packageName.matches(regex);
+ }
+ return packageRegex.equals(packageName);
+ }
}