如何在Mule中将多个输入参数添加到数据库连接器

时间:2019-02-28 13:38:37

标签: mule anypoint-studio dataweave

我正在使用Anypoint Studio 7.3和Mule 4.1。

我正在使用数据库批量插入连接器,我想将多个输入参数传递到SQL插入中。

我使用以下语法添加了多个输入参数

{payload: payload, tableName: vars.tblName, username: vars.username}

但是我收到下面的错误,并且也不确定如何引用有效载荷中的值仍然是:Code或payload.C​​ode:

  

无法将对象({有效载荷:[{代码:“ 1”,名称:“ test1”,Co ...“)强制转换为数组

我正在使用的配置是:

        <db:bulk-insert doc:name="Bulk Insert" doc:id="36328b21-ffd9-485e-8afa-34b6cb742956" config-ref="db-config">
            <db:bulk-input-parameters ><![CDATA[#[{payload: payload, tableName: vars.tblName, Username: vars.username}]]]></db:bulk-input-parameters>
            <db:sql >#["INSERT INTO :tableName
(
    :tableName,
    Code,
    Name,
    Comments
    User
)
VALUES 
(
    NEWID(), 
    :Code, 
    :Name, 
    :Comments,
    :username
)"]</db:sql>
        </db:bulk-insert>

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

这里的问题是,在bulk子中批量插入对象和对象数组。数组的每个元素都是一个对象,其中包含要插入的行的参数。

因此,在您的情况下,我认为有效负载包含所有代码,名称和注释的数组,因此我将使用此脚本

<db:bulk-input-parameters ><![CDATA[#[
        payload map ((item) -> item ++ {tableName: vars.tblName, username: vars.username} )
]]]></db:bulk-input-parameters>