瀏覽代碼

MybatisPlusInterceptor

miemie 5 年之前
父節點
當前提交
0257c2df28

+ 6 - 3
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/MybatisPlusInterceptor.java

@@ -63,8 +63,11 @@ public class MybatisPlusInterceptor implements Interceptor {
                 CacheKey cacheKey = executor.createCacheKey(ms, parameter, rowBounds, boundSql);
                 return executor.query(ms, parameter, rowBounds, resultHandler, cacheKey, boundSql);
             } else if (isUpdate) {
-                for (InnerInterceptor query : interceptors) {
-                    query.update(executor, ms, parameter);
+                for (InnerInterceptor update : interceptors) {
+                    if (!update.willDoUpdate(executor, ms, parameter)) {
+                        return 0;
+                    }
+                    update.beforeUpdate(executor, ms, parameter);
                 }
             }
         } else {
@@ -73,7 +76,7 @@ public class MybatisPlusInterceptor implements Interceptor {
             Connection connections = (Connection) args[0];
             Integer transactionTimeout = (Integer) args[1];
             for (InnerInterceptor innerInterceptor : interceptors) {
-                innerInterceptor.prepare(sh, connections, transactionTimeout);
+                innerInterceptor.beforePrepare(sh, connections, transactionTimeout);
             }
         }
         return invocation.proceed();

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/BlockAttackInnerInterceptor.java

@@ -36,7 +36,7 @@ import java.sql.Connection;
 public class BlockAttackInnerInterceptor extends JsqlParserSupport implements InnerInterceptor {
 
     @Override
-    public void prepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
+    public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
         PluginUtils.MPStatementHandler handler = PluginUtils.mpStatementHandler(sh);
         MappedStatement ms = handler.mappedStatement();
         SqlCommandType sct = ms.getSqlCommandType();

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/IllegalSQLInnerInterceptor.java

@@ -88,7 +88,7 @@ public class IllegalSQLInnerInterceptor extends JsqlParserSupport implements Inn
     private static final Map<String, List<IndexInfo>> indexInfoMap = new ConcurrentHashMap<>();
 
     @Override
-    public void prepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
+    public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
         PluginUtils.MPStatementHandler mpStatementHandler = PluginUtils.mpStatementHandler(sh);
         MappedStatement ms = mpStatementHandler.mappedStatement();
         SqlCommandType sct = ms.getSqlCommandType();

+ 15 - 4
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/InnerInterceptor.java

@@ -63,18 +63,29 @@ public interface InnerInterceptor {
      * @param ms        MappedStatement
      * @param parameter parameter
      */
-    default void update(Executor executor, MappedStatement ms, Object parameter) throws SQLException {
+    default boolean willDoUpdate(Executor executor, MappedStatement ms, Object parameter) throws SQLException {
+        return true;
+    }
+
+    /**
+     * @param executor  Executor(可能是代理对象)
+     * @param ms        MappedStatement
+     * @param parameter parameter
+     */
+    default void beforeUpdate(Executor executor, MappedStatement ms, Object parameter) throws SQLException {
         // do nothing
     }
 
     /**
-     *
+     * @param sh                 StatementHandler(可能是代理对象)
+     * @param connection         Connection
+     * @param transactionTimeout transactionTimeout
      */
-    default void prepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
+    default void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
         // do nothing
     }
 
     default void setProperties(Properties properties) {
-        // NOP
+        // do nothing
     }
 }

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/OptimisticLockerInnerInterceptor.java

@@ -62,7 +62,7 @@ public class OptimisticLockerInnerInterceptor implements InnerInterceptor {
     private static final String PARAM_UPDATE_METHOD_NAME = "update";
 
     @Override
-    public void update(Executor executor, MappedStatement ms, Object parameter) throws SQLException {
+    public void beforeUpdate(Executor executor, MappedStatement ms, Object parameter) throws SQLException {
         if (SqlCommandType.UPDATE != ms.getSqlCommandType()) {
             return;
         }

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/TenantLineInnerInterceptor.java

@@ -73,7 +73,7 @@ public class TenantLineInnerInterceptor extends JsqlParserSupport implements Inn
     }
 
     @Override
-    public void prepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
+    public void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {
         PluginUtils.MPStatementHandler mpSh = PluginUtils.mpStatementHandler(sh);
         MappedStatement ms = mpSh.mappedStatement();
         if (SqlParserHelper.getSqlParserInfo(ms)) {