Quellcode durchsuchen

Merge branch '3.0' into 3.gay

miemie vor 1 Jahr
Ursprung
Commit
926f8772f0

+ 28 - 5
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/parser/cache/AbstractCaffeineJsqlParseCache.java

@@ -53,26 +53,49 @@ public abstract class AbstractCaffeineJsqlParseCache implements JsqlParseCache {
 
     @Override
     public void putStatement(String sql, Statement value) {
-        put(sql, value);
+        this.put(sql, value);
     }
 
     @Override
     public void putStatements(String sql, Statements value) {
-        put(sql, value);
+        this.put(sql, value);
     }
 
     @Override
     public Statement getStatement(String sql) {
-        byte[] bytes = cache.getIfPresent(sql);
-        return null == bytes ? null : (Statement) deserialize(sql, bytes);
+        return this.get(sql);
     }
 
     @Override
     public Statements getStatements(String sql) {
+        return this.get(sql);
+    }
+
+    /**
+     * 获取解析对象,异常清空缓存逻辑
+     *
+     * @param sql 执行 SQL
+     * @return 返回泛型对象
+     */
+    protected <T> T get(String sql) {
         byte[] bytes = cache.getIfPresent(sql);
-        return null == bytes ? null : (Statements) deserialize(sql, bytes);
+        if (null != bytes) {
+            try {
+                return (T) deserialize(sql, bytes);
+            } catch (Exception e) {
+                cache.invalidate(sql);
+                logger.error("deserialize error", e);
+            }
+        }
+        return null;
     }
 
+    /**
+     * 存储解析对象
+     *
+     * @param sql   执行 SQL
+     * @param value 解析对象
+     */
     protected void put(String sql, Object value) {
         if (async) {
             if (executor != null) {

+ 1 - 7
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/parser/cache/FstSerialCaffeineJsqlParseCache.java

@@ -44,12 +44,6 @@ public class FstSerialCaffeineJsqlParseCache extends AbstractCaffeineJsqlParseCa
 
     @Override
     public Object deserialize(String sql, byte[] bytes) {
-        try {
-            return FstFactory.getDefaultFactory().asObject(bytes);
-        } catch (Exception e) {
-            cache.invalidate(sql);
-            logger.error("deserialize error", e);
-        }
-        return null;
+        return FstFactory.getDefaultFactory().asObject(bytes);
     }
 }

+ 2 - 15
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/parser/cache/JdkSerialCaffeineJsqlParseCache.java

@@ -18,14 +18,7 @@ package com.baomidou.mybatisplus.extension.parser.cache;
 import com.baomidou.mybatisplus.core.toolkit.SerializationUtils;
 import com.github.benmanes.caffeine.cache.Cache;
 import com.github.benmanes.caffeine.cache.Caffeine;
-import lombok.Setter;
-import net.sf.jsqlparser.statement.Statement;
-import net.sf.jsqlparser.statement.Statements;
-import org.apache.ibatis.logging.Log;
-import org.apache.ibatis.logging.LogFactory;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.Executor;
+
 import java.util.function.Consumer;
 
 /**
@@ -52,12 +45,6 @@ public class JdkSerialCaffeineJsqlParseCache extends AbstractCaffeineJsqlParseCa
 
     @Override
     public Object deserialize(String sql, byte[] bytes) {
-        try {
-            return SerializationUtils.deserialize(bytes);
-        } catch (Exception e) {
-            cache.invalidate(sql);
-            logger.error("deserialize error", e);
-        }
-        return null;
+        return SerializationUtils.deserialize(bytes);
     }
 }