首页 > 解决方案 > 如何在 Mule4 Select Query 中添加动态参数

问题描述

我有一个 SELECT 查询,其整个 WHERE 条件都来自 Java 类。如何在 SELECT 查询中使用整个 WHERE 条件?这是我尝试过的:

SELECT * FROM EMPLOYEE_TABLE WHERE 1=1 #[payload]

这里的有效负载是来自 Java 类的 WHERE 子句:NAME = VKP AND STATE = PA AND CITY = KOP

我收到一条错误消息,例如“parameter null was not bound for query select...”,但我能够看到来自 Java 类和日志的有效负载值。

标签: mulesoft

解决方案


您不应直接在查询中使用表达式。而是将表达式中的查询分配给变量,然后将该变量用作查询。

例如:

    <set-variable value="#['SELECT * FROM EMPLOYEE_TABLE WHERE 1=1 ' ++ payload]" name="query" />
    <db:select ...>
        <db:sql>#[vars.query]</db:sql>
    </db:select>

请注意,这样做可能会导致 SQL 注入漏洞。


推荐阅读