首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过HTTP请求和IN运算符-Mule 4上的查询参数发送数组列表

通过HTTP请求和IN运算符-Mule 4上的查询参数发送数组列表
EN

Stack Overflow用户
提问于 2019-07-15 13:05:47
回答 1查看 2.6K关注 0票数 0

我通过id的[1234,3442,9489,9498]发送查询参数的数组列表

代码语言:javascript
复制
    <http:request method="GET" config-ref="HTTP_Request_configuration" 
     path="${p.path}">
    <http:query-params><![CDATA[#[output application/java
    ---    {"id" : payload  }]]]>
   </http:query-params>

我收到以下错误:

错误:无法将java.util.ArrayList转换为> java.lang.String

注意:如果我为每个人发送他们,它的工作,如预期。但是,我希望在数据库中使用IN运算符将它们作为列表传递给查询字符串参数。

选择查询:

代码语言:javascript
复制
   <flow name="query database"  > 
<set-variable value="#[attributes.queryParams.'id']" doc:name="ID"   variableName="ID"/>
<db:select doc:name="Get data"  config-ref="Db Connection">
  <db:sql >
   SELECT * from Mytable where id in ( :Ref) </db:sql>
                <db:input-parameters ><![CDATA[#[{
                    Ref: vars.ID
                }]]]></db:input-parameters>

    </db:select>

解决办法:使用数据编织函数1234,3442,9489,9498将数组列表转换为reduce($+$$),但返回错误

关于如何通过查询参数传递带有分离值的数组列表并在DB查询的IN子句中使用它们的任何想法

编辑:(有效载荷joinBy ",")作为字符串帮助我传递这些值作为字符串,也改变了在RAML的类型。

现在,如何将这些值传递给DB到IN子句

EN

回答 1

Stack Overflow用户

发布于 2019-07-15 22:13:15

实际上,不能将ArrayList作为查询字符串的一部分传递。您将需要转换为逗号分隔或类似的传递作为查询字符串的一部分,就像您对数据编织所做的一样。

要使用它们作为IN查询的一部分,需要使用期望的ArrayList,需要将逗号分隔的列表转换回ArrayList。

您可以使用splitBy函数在数据编织中这样做:

代码语言:javascript
复制
#[attributes.queryParams.'id' splitBy(",")]

还注意到您正在设置变量vPersonRef,但将其称为vars.ID doc:name用于文档。因此,您需要使用name属性引用它。因此,vars.vPersonRef而不是vars.ID(或重命名):

代码语言:javascript
复制
 <set-variable value="#[attributes.queryParams.'id']" doc:name="ID"   variableName="vPersonref"/>
...
vars.ID
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57040394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档