From 91fcd50591e0419be8b2afa7b5365fa0e43cd2e4 Mon Sep 17 00:00:00 2001 From: hewei Date: Fri, 21 Apr 2017 14:40:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0SelectiveEnhancedPlugin?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../plugins/SelectiveEnhancedPlugin.java | 5 +++ .../generator/plugins/utils/PluginTools.java | 41 ++++++++++++++----- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index ebccd1d..f7d8974 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Maven引用: mybatis-generator-plugin 1.0.6 - + 1.0.7-SNAPSHOT ``` diff --git a/src/main/java/com/itfsw/mybatis/generator/plugins/SelectiveEnhancedPlugin.java b/src/main/java/com/itfsw/mybatis/generator/plugins/SelectiveEnhancedPlugin.java index fe66500..1cbfc1b 100644 --- a/src/main/java/com/itfsw/mybatis/generator/plugins/SelectiveEnhancedPlugin.java +++ b/src/main/java/com/itfsw/mybatis/generator/plugins/SelectiveEnhancedPlugin.java @@ -61,6 +61,11 @@ public class SelectiveEnhancedPlugin extends PluginAdapter { return false; } + // 插件配置位置最好是在末尾 + if (PluginTools.getConfigPlugins(getContext()).size() - 1 != PluginTools.getPluginIndex(SelectiveEnhancedPlugin.class, getContext())){ + logger.warn("itfsw:插件" + this.getClass().getTypeName() + "插件建议配置在所有插件末尾以便最后调用,否则某些Selective方法得不到增强!"); + } + return true; } diff --git a/src/main/java/com/itfsw/mybatis/generator/plugins/utils/PluginTools.java b/src/main/java/com/itfsw/mybatis/generator/plugins/utils/PluginTools.java index 8d5ebcb..96e245b 100644 --- a/src/main/java/com/itfsw/mybatis/generator/plugins/utils/PluginTools.java +++ b/src/main/java/com/itfsw/mybatis/generator/plugins/utils/PluginTools.java @@ -22,6 +22,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.List; /** @@ -37,27 +38,47 @@ public class PluginTools { /** * 检查插件依赖 + * @param plugin 插件 + * @param ctx 上下文 + * @return + */ + public static boolean checkDependencyPlugin(Class plugin, Context ctx) { + return getPluginIndex(plugin, ctx) >= 0; + } + + /** + * 获取插件所在位置 * * @param plugin 插件 * @param ctx 上下文 + * @return -1:未找到 + */ + public static int getPluginIndex(Class plugin, Context ctx) { + List list = getConfigPlugins(ctx); + // 检查是否配置了ModelColumnPlugin插件 + for (int i = 0; i < list.size(); i++) { + PluginConfiguration config = list.get(i); + if (plugin.getName().equals(config.getConfigurationType())) { + return i; + } + } + return -1; + } + + /** + * 获取插件列表 + * @param ctx 上下文 * @return */ - public static boolean checkDependencyPlugin(Class plugin, Context ctx){ + public static List getConfigPlugins(Context ctx) { try { // 利用反射获取pluginConfigurations属性 Field field = Context.class.getDeclaredField("pluginConfigurations"); field.setAccessible(true); - List list = (List) field.get(ctx); - // 检查是否配置了ModelColumnPlugin插件 - for (PluginConfiguration config: list) { - if (plugin.getName().equals(config.getConfigurationType())){ - return true; - } - } + return (List) field.get(ctx); } catch (Exception e) { logger.error("插件检查反射异常", e); } - - return false; + return new ArrayList<>(); } }