From 95836a73cdb754309ce7d3c6b3adb6e1fdce0ea6 Mon Sep 17 00:00:00 2001 From: redkale Date: Wed, 22 May 2024 11:37:42 +0800 Subject: [PATCH] =?UTF-8?q?source.parser=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/config.md | 30 +++++++++---------- .../org/redkale/source/DataJdbcSource.java | 7 +++-- .../source/DataNativeSqlStatement.java | 2 ++ 3 files changed, 21 insertions(+), 18 deletions(-) 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中的?数量一致