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<>(); } }