2016-02-04 68 views
2

我想使用Mule ESB將JSON的內容插入MySql數據庫。 JSON的樣子:在Mule的數據庫中插入JSON到多個表

{ 
"id":106636, 
"client_id":9999, 
"comments":"Credit", 
"salesman_name":"Salvador Dali", 
"cart_items":[ 
       {"citem_id":1066819,"quantity":3}, 
       {"citem_id":1066820,"quantity":10} 
      ] 
} 

在騾子我想要插入像一個步驟中的所有數據:

  • 插入order_header(ID,CLIENT_ID,評論,salesman_name)
  • 插入INTO order_detail(id,citem_id,數量)
  • 插入INTO order_detail(id,citem_id,數量)

目前我來騾子這麼遠: MuleSoft Flow

回答

0

好的。因爲,你已經轉換成JSON對象在流,可以參考與像obj.id他們的對象引用,obj.client_id等各個值

  1. 獲取下一個數據庫連接。
  2. 在「連接器配置」中配置您的MySQL數據庫。
  3. 操作:選擇「批量執行」
  4. 在「查詢文本」中:寫入多個INSERT查詢並從Object傳入適當的值(從JSON轉換而來)。請記住在查詢文本中用分號(;)分隔多個查詢。

就是這樣!如果您遇到任何問題,請告知我。希望它適用於你..

+0

我覺得我不好表達自己,cart_items'的'數量,如果動態的,所以我不能對cart_items'的'量做一個固定的查詢。 –

+0

好的。得到它了 !! 所以,cart_items的數量將確定ORDER_DETAIL表的「INSERT」語句的數量。試試這個: 1.將1個DB連接器放在JSONtoObject連接器後。 2.添加邏輯以僅爲ORDER_HEADER表使用1個INSERT語句。 3.然後,添加一個「For each」組件,它將在cart_items的集合上循環。來自JSON的對象應該有一個cart_items集合。 4.在「For each」中添加另一個數據庫組件,併爲ORDER_DETAIL表提及1個INSERT語句。對於每個將自動遍歷cart_item集合並執行所需的「插入」。 – amit

+0

感謝您的幫助 –

2

使用批量執行數據庫連接器的操作。 您將插入多個表格。 爲前:

查詢文本

Insert INTO order_header(payload.id,payload.client_id,payload.comments,payload.salesman_name); 
Insert INTO order_detail(payload.id,payload.cart_items[0].citem_id,payload.cart_items[0].quantity); etc..