我通过id的[1234,3442,9489,9498]发送查询参数的数组列表
<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运算符将它们作为列表传递给查询字符串参数。
选择查询:
<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子句
发布于 2019-07-15 22:13:15
实际上,不能将ArrayList作为查询字符串的一部分传递。您将需要转换为逗号分隔或类似的传递作为查询字符串的一部分,就像您对数据编织所做的一样。
要使用它们作为IN查询的一部分,需要使用期望的ArrayList,需要将逗号分隔的列表转换回ArrayList。
您可以使用splitBy函数在数据编织中这样做:
#[attributes.queryParams.'id' splitBy(",")]还注意到您正在设置变量vPersonRef,但将其称为vars.ID doc:name用于文档。因此,您需要使用name属性引用它。因此,vars.vPersonRef而不是vars.ID(或重命名):
<set-variable value="#[attributes.queryParams.'id']" doc:name="ID" variableName="vPersonref"/>
...
vars.IDhttps://stackoverflow.com/questions/57040394
复制相似问题