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 05fcc64d86a47c592ab4f32954d4cd5feaef3eae..ef84013a357520054883d15dba736ab82056527c 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(); }