miemie 5 anni fa
parent
commit
28fd705f6a

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

@@ -10,7 +10,9 @@ import org.apache.ibatis.plugin.*;
 import org.apache.ibatis.session.ResultHandler;
 import org.apache.ibatis.session.RowBounds;
 
-import java.util.*;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
 
 /**
  * @author miemie
@@ -43,6 +45,9 @@ public class MybatisPlusInterceptor implements Interceptor {
             boundSql = (BoundSql) args[5];
         }
         for (BeforeQuery query : beforeQueries) {
+            if (!query.canChange(executor, ms, parameter, rowBounds, resultHandler, boundSql)) {
+                return Collections.emptyList();
+            }
             boundSql = query.change(executor, ms, parameter, rowBounds, resultHandler, boundSql);
         }
         CacheKey cacheKey = executor.createCacheKey(ms, parameter, rowBounds, boundSql);

+ 15 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/chain/BeforeQuery.java

@@ -14,6 +14,21 @@ import java.sql.SQLException;
  */
 public interface BeforeQuery {
 
+    /**
+     * 拦截 Executor.query 执行前对执行sql进行处理
+     *
+     * @param executor      Executor(可能是代理对象)
+     * @param ms            MappedStatement
+     * @param parameter     parameter
+     * @param rowBounds     rowBounds
+     * @param resultHandler resultHandler
+     * @param boundSql      boundSql
+     * @return 新的 boundSql
+     */
+    default boolean canChange(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
+        return true;
+    }
+
     /**
      * 拦截 Executor.query 执行前对执行sql进行处理
      *