Browse Source

Update DynamicTableNameInnerInterceptor.java

添加动态表名的钩子函数,以方便回调用ThreadLocal#remove方法防止内存泄漏
JuniorXu 3 years ago
parent
commit
ab84e191e2

+ 9 - 0
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/DynamicTableNameInnerInterceptor.java

@@ -49,6 +49,12 @@ import java.util.List;
 @AllArgsConstructor
 @AllArgsConstructor
 @SuppressWarnings({"rawtypes"})
 @SuppressWarnings({"rawtypes"})
 public class DynamicTableNameInnerInterceptor implements InnerInterceptor {
 public class DynamicTableNameInnerInterceptor implements InnerInterceptor {
+    private Runnable hook;
+
+    public void setHook(Runnable hook) {
+        this.hook = hook;
+    }
+    
     /**
     /**
      * 表名处理器,是否处理表名的情况都在该处理器中自行判断
      * 表名处理器,是否处理表名的情况都在该处理器中自行判断
      */
      */
@@ -90,6 +96,9 @@ public class DynamicTableNameInnerInterceptor implements InnerInterceptor {
         }
         }
         if (last != sql.length()) {
         if (last != sql.length()) {
             builder.append(sql.substring(last));
             builder.append(sql.substring(last));
+        }
+         if(hook != null){
+            hook.run();
         }
         }
         return builder.toString();
         return builder.toString();
     }
     }