diff --git a/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/AsyncPaginationInnerInterceptor.java b/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/AsyncPaginationInnerInterceptor.java index df5415dc7..56823f94a 100644 --- a/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/AsyncPaginationInnerInterceptor.java +++ b/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/AsyncPaginationInnerInterceptor.java @@ -69,7 +69,6 @@ import org.mybatis.spring.transaction.SpringManagedTransaction; import javax.sql.DataSource; -import java.sql.SQLException; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; @@ -210,7 +209,7 @@ public boolean willDoQuery(Executor executor, MappedStatement ms, Object paramet @Override public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, - ResultHandler resultHandler, BoundSql boundSql) throws SQLException { + ResultHandler resultHandler, BoundSql boundSql) { IPage page = ParameterUtils.findPage(parameter).orElse(null); if (null == page) { return; diff --git a/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/FuryFactory.java b/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/FuryFactory.java index b69506d2c..33e8d7355 100644 --- a/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/FuryFactory.java +++ b/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/FuryFactory.java @@ -17,8 +17,6 @@ package org.laokou.common.mybatisplus.config; -import net.sf.jsqlparser.expression.Function; -import net.sf.jsqlparser.statement.select.OrderByElement; import org.apache.fury.Fury; import org.apache.fury.ThreadSafeFury; @@ -29,7 +27,7 @@ public final class FuryFactory { private static final FuryFactory FACTORY = new FuryFactory(); - private final ThreadSafeFury FURY = Fury.builder().buildThreadSafeFury(); + private final ThreadSafeFury FURY = Fury.builder().withAsyncCompilation(true).buildThreadSafeFury(); public FuryFactory() { FURY.register(net.sf.jsqlparser.expression.Alias.class); @@ -249,17 +247,17 @@ public FuryFactory() { FURY.register(net.sf.jsqlparser.expression.BinaryExpression.class); FURY.register(net.sf.jsqlparser.expression.operators.relational.ComparisonOperator.class); FURY.register(net.sf.jsqlparser.expression.operators.relational.OldOracleJoinBinaryExpression.class); + FURY.register(net.sf.jsqlparser.expression.Function.NullHandling.class); FURY.register(net.sf.jsqlparser.statement.CreateFunctionalStatement.class); FURY.register(net.sf.jsqlparser.statement.select.Select.class); FURY.register(net.sf.jsqlparser.statement.select.SetOperation.class); FURY.register(net.sf.jsqlparser.util.cnfexpression.MultipleExpression.class); FURY.register(net.sf.jsqlparser.statement.insert.InsertModifierPriority.class); - FURY.register(OrderByElement.NullOrdering.class); + FURY.register(net.sf.jsqlparser.statement.select.OrderByElement.NullOrdering.class); FURY.register(net.sf.jsqlparser.statement.select.ForMode.class); FURY.register(net.sf.jsqlparser.statement.select.MySqlSqlCacheFlags.class); FURY.register(net.sf.jsqlparser.statement.select.PlainSelect.BigQuerySelectQualifier.class); FURY.register(net.sf.jsqlparser.statement.update.UpdateModifierPriority.class); - FURY.register(Function.NullHandling.class); } public static FuryFactory getFuryFactory() { diff --git a/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/FurySerialCaffeineJsqlParseCache.java b/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/FurySerialCaffeineJsqlParseCache.java index 28999c4fb..2c348d4aa 100644 --- a/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/FurySerialCaffeineJsqlParseCache.java +++ b/laokou-common/laokou-common-mybatis-plus/src/main/java/org/laokou/common/mybatisplus/config/FurySerialCaffeineJsqlParseCache.java @@ -19,6 +19,12 @@ import com.baomidou.mybatisplus.extension.parser.cache.AbstractCaffeineJsqlParseCache; import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; +import org.laokou.common.i18n.utils.ObjectUtil; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.function.Consumer; /** * jsqlparser 缓存 fury 序列化 Caffeine 缓存实现. @@ -31,6 +37,32 @@ public FurySerialCaffeineJsqlParseCache(Cache cache) { super(cache); } + public FurySerialCaffeineJsqlParseCache(Consumer> consumer) { + super(consumer); + } + + public FurySerialCaffeineJsqlParseCache(Cache cache, Executor executor, boolean async) { + super(cache); + // 开启异步 + super.async = async; + super.executor = executor; + } + + @Override + protected void put(String sql, Object value) { + if (async) { + if (ObjectUtil.isNotNull(executor)) { + executor.execute(() -> cache.put(sql, serialize(value))); + } + else { + CompletableFuture.runAsync(() -> cache.put(sql, serialize(value))); + } + } + else { + cache.put(sql, serialize(value)); + } + } + @Override public byte[] serialize(Object obj) { return FuryFactory.getFuryFactory().serialize(obj);