2

我正在将 JSON 数据传递给 Mule,如果我回显有效负载,我会得到:

{"AddJob":{"JobNumber":12345,"Version":1}}

我想使用 JDBC 查询将这些值插入到表中。我用什么代替“???” 在下面引用那些 JSON 参数?我需要先将其转换为对象吗?

<jdbc:query key="insertQuery" value="INSERT INTO [dbo].[Jobs] ([[JOB_NUMBER], [VERSION]) VALUES (???? , ????)"/>
4

2 回答 2

2

在 3.3.0 中引入 MEL 后,推荐的方法是将 JSON 有效负载转换为 Map:

<json:json-to-object-transformer returnClass="java.util.HashMap"/>

然后在查询中使用 MEL 表达式:

<jdbc:query key="insertQuery"
            value="INSERT INTO [dbo].[Jobs] ([[JOB_NUMBER], [VERSION]) VALUES (#[message.payload.AddJob.JobNumber], #[message.payload.AddJob.Version])"/>
于 2012-09-21T21:17:53.433 回答
1

对于这个用例,您应该考虑使用mule 提供的Json 表达式评估器。

您的 jdbc 查询如下所示

<jdbc:query key="insertQuery" value="INSERT INTO [dbo].[Jobs] ([[JOB_NUMBER], [VERSION]) VALUES (#[json: AddJob/JobNumber] , #[json: AddJob/Version])"/>
于 2012-09-21T20:11:27.520 回答