如何在Mule JDBC查询中引用JSON参数?

时间:2012-09-21 18:54:00

标签: mule

我正在将JSON数据传递给Mule,如果我回应Payload我得到了这个:

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

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

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

2 个答案:

答案 0 :(得分: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])"/>

答案 1 :(得分:1)

对于此用例,您应该考虑使用mule提供的Json expression evaluator

您的jdbc查询将如下所示

<jdbc:query key="insertQuery" value="INSERT INTO [dbo].[Jobs] ([[JOB_NUMBER], [VERSION]) VALUES (#[json: AddJob/JobNumber] , #[json: AddJob/Version])"/>