diff --git a/docs/config.md b/docs/config.md
index 9967c720f..31b38b231 100644
--- a/docs/config.md
+++ b/docs/config.md
@@ -42,15 +42,15 @@
@@ -58,11 +58,11 @@
MQ管理接口配置
不同MQ节点所配置的MQ集群不能重复。
MQ跟着协议走,所以mq的属性值需要被赋值在rest节点上, 由于SncpServlet是自动生成的,故SNCP协议下,mq属性值被赋值在service/services节点上
- name: 服务的名称,用于监控识别,多个mq节点时只能有一个name为空的节点,mq.name不能重复,命名规则: 字母、数字、下划线
- type: 实现类名,必须是org.redkale.mq.MessageAgent的子类
- threads:线程数,为0表示使用workExecutor。默认: CPU核数, 核数=1的情况下默认值为2,JDK 21以上版本默认使用虚拟线程池
+ name: 服务的名称,用于监控识别,多个mq节点时只能有一个name为空的节点,mq.name不能重复,命名规则: 字母、数字、下划线
+ type: 实现类名,必须是org.redkale.mq.MessageAgent的子类
+ threads: 线程数,为0表示使用workExecutor。默认: CPU核数, 核数=1的情况下默认值为2,JDK 21以上版本默认使用虚拟线程池
rpcfirst:cluster和mq同名组件时,HttpRpcClient优先使用MQ,默认不优先走MQ。
- coder: MessageRecord的解析器类,必须是org.redkale.mq.MessageCoder的实现类,
+ coder: MessageRecord的解析器类,必须是org.redkale.mq.MessageCoder的实现类,
可对数据包进行加密解密,默认值:org.redkale.mq.MessageRecordCoder
MQ节点下的子节点配置没有固定格式, 根据MessageAgent实现方的定义来配置
-->
@@ -236,7 +236,7 @@
当Server为HTTP协议时, rest节点才有效。存在[rest]节点则Server启动时会加载REST服务, 节点可以多个,(WATCH协议不需要设置,系统会自动生成)
path: servlet的ContextPath前缀 默认为空 【注: 开启MQ时,该字段失效】
base: REST服务的BaseServlet,必须是 org.redkale.net.http.HttpServlet 的子类,且子类必须标记@HttpUserType。
- mq: 所属的MQ管理器, 存在该属性表示RestService的请求来自于消息总线 【注: 开启MQ时,path字段失效】
+ mq: 所属的MQ管理器, 存在该属性表示RestService的请求来自于消息总线 【注: 开启MQ时,path字段失效】
autoload:默认值"true" 默认值. 加载当前server所能使用的Servce对象;
includes:当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
excludes:当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
@@ -295,7 +295,7 @@
diff --git a/src/main/java/org/redkale/source/DataJdbcSource.java b/src/main/java/org/redkale/source/DataJdbcSource.java
index dc37a783a..0cfd5d4ed 100644
--- a/src/main/java/org/redkale/source/DataJdbcSource.java
+++ b/src/main/java/org/redkale/source/DataJdbcSource.java
@@ -2629,16 +2629,17 @@ public class DataJdbcSource extends AbstractDataSqlSource {
}
long total = -1;
List list;
+ final String countSql = sinfo.getNativeCountSql();
if (sinfo.isEmptyNamed()) {
Statement stmt = conn.createQueryStatement();
- ResultSet set = stmt.executeQuery(sinfo.getNativeCountSql());
+ ResultSet set = stmt.executeQuery(countSql);
if (set.next()) {
total = set.getLong(1);
}
set.close();
conn.offerQueryStatement(stmt);
} else {
- final PreparedStatement prestmt = conn.prepareQueryStatement(sinfo.getNativeCountSql());
+ final PreparedStatement prestmt = conn.prepareQueryStatement(countSql);
Map paramValues = sinfo.getParamValues();
int index = 0;
for (String n : sinfo.getParamNames()) {
@@ -2651,7 +2652,7 @@ public class DataJdbcSource extends AbstractDataSqlSource {
set.close();
conn.offerQueryStatement(prestmt);
}
- slowLog(s, sinfo.getNativeCountSql());
+ slowLog(s, countSql);
if (total > 0) {
String listSql = sinfo.getNativeSql();
if (mysqlOrPgsql) {
diff --git a/src/main/java/org/redkale/source/DataNativeSqlStatement.java b/src/main/java/org/redkale/source/DataNativeSqlStatement.java
index 1f3952d7f..3cd2d7dc7 100644
--- a/src/main/java/org/redkale/source/DataNativeSqlStatement.java
+++ b/src/main/java/org/redkale/source/DataNativeSqlStatement.java
@@ -6,6 +6,7 @@ package org.redkale.source;
import java.util.List;
import java.util.Map;
import java.util.function.IntFunction;
+import org.redkale.annotation.Nullable;
import org.redkale.convert.ConvertDisabled;
import org.redkale.convert.json.JsonConvert;
@@ -40,6 +41,7 @@ public class DataNativeSqlStatement {
protected String nativeSql;
//根据参数值集合重新生成的带?参数可执行的计算总数sql,用于返回Sheet对象
+ @Nullable
protected String nativeCountSql;
//需要预编译的##{xxx}、#{xxx}参数名, 数量与sql中的?数量一致