MULE ESB:在会话变量中保存Sql查询的结果

时间:2014-09-10 15:17:42

标签: mule mule-studio mule-el mule-component mule-module-jpa

我创建了一个示例mule应用程序,它从我的数据库中提取一行。 它从数据库中提取USER_NAME和USER_ID。 当我将结果转换为JSON或XML时,我将输出作为

[{ “USER_ID”: “U001”, “USER_NAME”: “Dharmin”}]

现在我想在会话变量中保存USER_ID和USER_NAME。 有人可以指导我吗?

编辑:更新了基本流图像

http://imgur.com/PzvG5eW

2 个答案:

答案 0 :(得分:1)

转换为JSON后添加: -

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

然后使用以下内容将值放入会话变量: -

<set-session-variable doc:name="Session Variable" value="message.payload.USER_ID" variableName="USER_ID"/> 

<set-session-variable doc:name="Session Variable" value="message.payload.USER_NAME" variableName="USER_NAME"/>

答案 1 :(得分:0)

您是否需要将数据库中的结果用作Json?

如果没有,在将值保存到sessionVars之前,甚至不要将值转换为JSON。在数据库调用后直接从Payload访问它们:

enter image description here

enter image description here

enter image description here

这是配置XML:

<flow name="testsFlow">

    <db:select config-ref="ORacle_DBCP_Config" doc:name="inputdata">
        <db:parameterized-query><![CDATA[SELECT 'U001' AS USER_ID, 'Dharmin' AS USER_NAME FROM DUAL]]></db:parameterized-query>
    </db:select>
    <set-session-variable variableName="userName" value="#[payload[0].USER_NAME]" doc:name="userName"/>
    <set-session-variable variableName="userID" value="#[payload[0].USER_ID]" doc:name="userID"/>
    <logger message="#[&quot;UserID: &quot; + sessionVars.userID + &quot; | UserName: &quot; + sessionVars.userName]" level="INFO" doc:name="Output the test"/>
</flow>

记录器的输出为:

processor.LoggerMessageProcessor: UserID: U001 | UserName: Dharmin