gpt4 book ai didi

arraylist - 在Mule数据库中插入Arraylist

转载 作者:行者123 更新时间:2023-12-02 11:30:09 25 4
gpt4 key购买 nike

我正在尝试使用 Mule ESB 将 ArrayList 的内容插入到 SQL Server 数据库中。 ArrayList 看起来像

[
{Id=a1o90000001muvWAAQ, Billing_Number__c=1000005, type=Call_Log__c},
{Id=a1o90000001muvXAAQ, Billing_Number__c=1000006, type=Call_Log__c}
]

我应该如何以优化的方式将其插入数据库?

我的骡子流程如下。

<sfdc:query config-ref="Salesforce__Basic_authentication" query="#[flowVars.query]" 
doc:name="Salesforce"/>
<set-variable variableName="result" value="#[new java.util.ArrayList()]"
doc:name="Variable"/>
<foreach doc:name="For Each">
<set-variable variableName="itrresult" value="#result.add(message.payload)]"
doc:name="Variable"/>
</foreach>
<splitter expression="#[flowVars.result]" doc:name="Splitter"/>
<logger message="#[payload['Id']]" level="INFO" doc:name="Logger"/>

#[payload['Id']] 为我提供了日志中的 Id LoggerMessageProcessor:a1o90000001mzgzAAA。

我不确定我正在做的事情是否正确。我刚刚开始学习 Mule。

最佳答案

您不需要 Splitter 或 Foreach 作用域。数据库连接器有 bulk mode这使得连接器接受集合作为有效负载。

Enable to submit collections of data with one query, [...]. Enabling bulk mode improves the performance of your applications as it reduces the number of individual query executions. Bulk mode requires a parameterized query with at least one parameter.

在插入、更新或删除操作中使用bulkMode="true"启用它。

编辑:在 Salesforce 查询组件之后立即使用此命令:

    <sfdc:query config-ref="" query="#[flowVars.query]" doc:name="Salesforce"/>
<db:insert config-ref="" bulkMode="true" doc:name="Database">
<db:parameterized-query>
<![CDATA[INSERT INTO TABLE (ID, BILLING_NUMBER__C, TYPE)
VALUES (#[payload.Id], #[payload.Billing_Number__c], #[payload.type]);]]>
</db:parameterized-query>
</db:insert>

数据库插入组件返回的有效负载是一个数组,其中包含针对执行的每个查询而更改的行数。在您的例子中,一个数组的大小为 Salesforce 查询组件返回的项目数,例如 [1, 1, 1, ...]

如果您仍然需要登录,请执行以下操作:

    <sfdc:query config-ref="" query="#[flowVars.query]" doc:name="Salesforce"/>
<foreach doc:name="For Each">
<logger message="#[payload.Id]" level="INFO" doc:name="Logger"/>
</foreach>
<db:insert config-ref="" bulkMode="true" doc:name="Database">
<db:parameterized-query><!-- the query --></db:parameterized-query>
</db:insert>

或者这个:

    <sfdc:query config-ref="" query="#[flowVars.query]" doc:name="Salesforce"/>
<foreach doc:name="For Each">
<logger message="#[payload.Id]" level="INFO" doc:name="Logger"/>
<db:insert config-ref="" doc:name="Database"><!-- bulkMode disabled -->
<db:parameterized-query><!-- the query --></db:parameterized-query>
</db:insert>
</foreach>

关于arraylist - 在Mule数据库中插入Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29957371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com