Database 带IN运算符的Mule Oracle数据库连接器SQL

Database 带IN运算符的Mule Oracle数据库连接器SQL,database,mule,mule-component,Database,Mule,Mule Component,mule的数据库连接器有问题,我使用它进行select查询。我有一个字符串的arraylist要在参数中给出 上面提到的解决方案不适用于3.7.3 Mule ESB,我已经尝试了很多方法并进行了搜索。除了这份文件,到目前为止我还没有确定的方法 我正在使用下面的查询: 从(2,3,4)中id所在的db_表中选择* 在我的示例中,2,3,4在包含arraylist的flow变量中 有什么建议吗?你可以这样做。我正在使用MySQL作为示例,只需将其更改为Oracle即可 希望这有帮助您可以这样

mule的数据库连接器有问题,我使用它进行select查询。我有一个字符串的arraylist要在参数中给出

上面提到的解决方案不适用于3.7.3 Mule ESB,我已经尝试了很多方法并进行了搜索。除了这份文件,到目前为止我还没有确定的方法

我正在使用下面的查询:

从(2,3,4)中id所在的db_表中选择*

在我的示例中,2,3,4在包含arraylist的flow变量中


有什么建议吗?

你可以这样做。我正在使用MySQL作为示例,只需将其更改为Oracle即可



希望这有帮助

您可以这样做。我正在使用MySQL作为示例,只需将其更改为Oracle即可

<set-variable variableName="CHUNKVIBLIST" value="#[new ArrayList()]" doc:name="Set CHUNKVIBLIST Variable"/>
    <expression-component doc:name="Expression"><![CDATA[int chunkSize = 1000;
            for (int i = 0; i < flowVars.VIBLIST.size(); i += chunkSize) {      flowVars.CHUNKVIBLIST.add("'"+org.apache.commons.lang.StringUtils.join(flowVars.VIBLIST.subList(i, i + chunkSize >=  flowVars.VIBLIST.size() ?  flowVars.VIBLIST.size() : i + chunkSize),"','")+"'");
            }]]></expression-component>
        
    <foreach collection="#[flowVars.CHUNKVIBLIST]" doc:name="For Each matnr batch:">
    <db:select config-ref="Mule_DB_Configuration" doc:name="Select statement">
            <db:dynamic-query><![CDATA[SELECT DISTINCT(MATNR) FROM cated_prodrelease where MATNR IN (#[payload])]]></db:dynamic-query>
    </db:select>
    </foreach>


希望这有帮助


<set-variable variableName="CHUNKVIBLIST" value="#[new ArrayList()]" doc:name="Set CHUNKVIBLIST Variable"/>
    <expression-component doc:name="Expression"><![CDATA[int chunkSize = 1000;
            for (int i = 0; i < flowVars.VIBLIST.size(); i += chunkSize) {      flowVars.CHUNKVIBLIST.add("'"+org.apache.commons.lang.StringUtils.join(flowVars.VIBLIST.subList(i, i + chunkSize >=  flowVars.VIBLIST.size() ?  flowVars.VIBLIST.size() : i + chunkSize),"','")+"'");
            }]]></expression-component>
        
    <foreach collection="#[flowVars.CHUNKVIBLIST]" doc:name="For Each matnr batch:">
    <db:select config-ref="Mule_DB_Configuration" doc:name="Select statement">
            <db:dynamic-query><![CDATA[SELECT DISTINCT(MATNR) FROM cated_prodrelease where MATNR IN (#[payload])]]></db:dynamic-query>
    </db:select>
    </foreach>
=flowVars.VIBLIST.size()?flowVars.VIBLIST.size(); }]]>
2021年3月1日更新旧答案是我的初学者时代,我刚刚决定 要更新我的答案并使用上面的更改,您应该创建有效负载 包含逗号分隔的字符串,以使用中使用的答案 语句作为动态查询


=flowVars.VIBLIST.size()?flowVars.VIBLIST.size();
}]]>
2021年3月1日更新旧答案是我的初学者时代,我刚刚决定 要更新我的答案并使用上面的更改,您应该创建有效负载 包含逗号分隔的字符串,以使用中使用的答案 语句作为动态查询


事实上,我正在处理字符串列表,我刚才在我的问题上给出了整数的例子。但我在数据库中搜索的数据类型是VARCHAR,所以这不起作用,但它当然适用于数字数据类型。谢谢你们的友好回答。事实上,我正在处理字符串列表,我刚才在我的问题上给出了整数的例子。但我在数据库中搜索的数据类型是VARCHAR,所以这不起作用,但它当然适用于数字数据类型。谢谢您的友好回答。您如何用这种方法解决SQL注入的问题?我相信字符串连接不是创建SQL语句的最佳实践。使用SQL注入更新了答案。如何使用这种方法解决SQL注入的问题?我相信字符串连接不是创建SQL语句的最佳实践。使用SQL注入更新了答案。