3

在这里,我需要将动态的多个客户 ID 传递给 mule 中的选择查询。所以我想出了一个逗号分隔的字符串,其中包含我的客户 ID,例如:String custid=1001,1002。我正在使用 groovy evalutor 来获取 JDBC 查询的字符串值。但是我收到一个空的有效载荷之后执行查询。同样对于像String Custid =1001这样的单值字符串,我得到了想要的结果。因此,在 Mule 中,它是否会为'1001,1002'之类的字符串附加单引号,这会导致此问题吗?

请帮我解决这个问题。另外请让我知道是否有其他方法可以解决这个问题?

这是我的代码片段:

<jdbc:query key="getCustID" value="SELECT CUSTID,CUSTTYPE FROM CUSTINFO WHERE CUSTID IN  (#[groovy:payload.custid]) "/>
4

1 回答 1

1

Mule 替换表达式,就像#[groovy:payload.custid]绑定参数一样,所以这就是它不起作用的原因:逗号分隔的值被替换为单个参数。

对于您想要做的事情,我没有很好的解决方案。一种方法是使用已在JDBC 连接器queries映射上解析的 ID 列表注册查询,然后再使用它。您将生成一个唯一的查询名称(如 UUID)以确保它仅由当前线程使用,并且您还需要queries在使用后将其从映射中删除以避免内存泄漏。

虽然这非常hacky,但希望其他人会有更好的答案......

于 2012-07-11T17:34:59.813 回答