From c4b7cc38bced137a55218b39925144f6ceedc3dc Mon Sep 17 00:00:00 2001 From: aqnghu <405705277@qq.com> Date: Wed, 14 Jun 2023 05:19:20 +0000 Subject: [PATCH] =?UTF-8?q?=E3=80=90BUG=E4=BF=AE=E5=A4=8D=E3=80=91buildSql?= =?UTF-8?q?=20=E6=9C=AA=E8=A7=A3=E6=9E=90=20ognl=20=E8=A1=A8=E8=BE=BE?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: aqnghu <405705277@qq.com> --- .../java/net/hasor/dbvisitor/jdbc/core/ParsedSql.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dbvisitor/src/main/java/net/hasor/dbvisitor/jdbc/core/ParsedSql.java b/dbvisitor/src/main/java/net/hasor/dbvisitor/jdbc/core/ParsedSql.java index 05fcc64d..ef84013a 100644 --- a/dbvisitor/src/main/java/net/hasor/dbvisitor/jdbc/core/ParsedSql.java +++ b/dbvisitor/src/main/java/net/hasor/dbvisitor/jdbc/core/ParsedSql.java @@ -85,8 +85,15 @@ public class ParsedSql { sqlToUse.append(originalSql, lastIndex, startIndex); if (paramSource != null) { - Object value = paramSource.getValue(parameterNames.get(i)); + String paramName = parameterNames.get(i); + Object value = paramSource.getValue(paramName); if (this.namedParameterCount > 0) { + //处理类似:@{and, cfg_id = :p.cfg_id.array[1].name} 的情况 + if (value == null && paramName.contains(".")) { + if (!paramName.contains("#") && !paramName.contains("@")) { + value = OgnlUtils.evalOgnl(paramName, paramSource.toMap()); + } + } if (value instanceof InSqlParameter) { value = ((InSqlParameter) value).getValue(); } -- Gitee