2012-09-21 48 views
2

我傳遞JSON數據騾子,如果我贊同的有效載荷我得到這個:如何在Mule JDBC查詢中引用JSON參數?

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

我希望將這些值插入到使用JDBC查詢表。什麼我替換「????」用下面的引用那些JSON參數?我需要先將它轉換爲Object嗎?

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

回答

2

梅爾在3.3.0介紹,推薦的方法是改造JSON有效載荷地圖:

<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])"/> 
+0

謝謝,這工作。 –

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])"/> 
+1

爲了確保未來的配置,在Mule 3.3.0及以上版本中,最好不要使用個人評估者,比如'json',而是使用MEL。個人評估人員可能會在未來的主要版本中刪除。 –

+0

謝謝,我最初這樣做(工作),然後切換到MEL表達式。 –

+0

我之所以建議你採用這種方法是因爲我不知道你使用的騾子版本是什麼。如果使用mule 3.3.0 MEL是最終的選擇。 – genjosanzo