From 4259deb19122a4807d50c99ed4a95405ebe4a47c Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期五, 10 四月 2026 08:40:18 +0800
Subject: [PATCH] #
---
rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java | 48 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 47 insertions(+), 1 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java
index 056b4a7..c28485d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/config/MybatisPlusConfig.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.MybatisMapWrapperFactory;
+import com.baomidou.mybatisplus.extension.parser.JsqlParserGlobal;
+import com.baomidou.mybatisplus.extension.parser.cache.JdkSerialCaffeineJsqlParseCache;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
@@ -11,7 +13,6 @@
import com.vincent.rsf.server.system.entity.User;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;
-import net.sf.jsqlparser.expression.NullValue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.Authentication;
@@ -19,6 +20,10 @@
import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.util.Arrays;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* MybatisPlus閰嶇疆
@@ -30,8 +35,11 @@
@EnableTransactionManagement
public class MybatisPlusConfig {
+ private static volatile boolean jsqlParserConfigured = false;
+
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
+ configureJsqlParser();
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 娣诲姞涔愯閿佹彃浠�
@@ -54,6 +62,8 @@
"sys_menu",
"sys_pda_role_menu",
"sys_menu_pda",
+ "sys_matnr_role_menu",
+ "sys_warehouse_role_menu",
"man_loc_type_rela",
"man_qly_inspect_result",
"view_stock_manage",
@@ -71,6 +81,41 @@
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
+ }
+
+ private void configureJsqlParser() {
+ if (jsqlParserConfigured) {
+ return;
+ }
+ synchronized (MybatisPlusConfig.class) {
+ if (jsqlParserConfigured) {
+ return;
+ }
+ AtomicInteger threadIndex = new AtomicInteger(1);
+ int parserThreads = Math.max(4, Runtime.getRuntime().availableProcessors());
+ ThreadPoolExecutor parserExecutor = new ThreadPoolExecutor(
+ parserThreads,
+ parserThreads,
+ 0L,
+ TimeUnit.MILLISECONDS,
+ new LinkedBlockingQueue<>(2048),
+ runnable -> {
+ Thread thread = new Thread(runnable);
+ thread.setName("jsql-parser-" + threadIndex.getAndIncrement());
+ thread.setDaemon(true);
+ return thread;
+ },
+ new ThreadPoolExecutor.CallerRunsPolicy()
+ );
+ JsqlParserGlobal.setExecutorService(parserExecutor, new Thread(() -> {
+ if (!parserExecutor.isShutdown()) {
+ parserExecutor.shutdown();
+ }
+ }, "jsql-parser-shutdown"));
+ JsqlParserGlobal.setJsqlParseCache(new JdkSerialCaffeineJsqlParseCache(builder ->
+ builder.maximumSize(1024).expireAfterAccess(30, TimeUnit.MINUTES)));
+ jsqlParserConfigured = true;
+ }
}
/**
@@ -115,3 +160,4 @@
};
}
}
+
--
Gitblit v1.9.1