在Mule流中使用SQL结果变量

在Mule流中使用SQL结果变量,mule,flow,Mule,Flow,我得到了一个包含2个查询的Mule流。 第一个简单地验证用户名是否重复 是这样做的: 从username=[json:username]和test\u message\u title=[json:test\u message\u title]的user\u tests中选择count*作为总计 如果TOTAL=0,则第二个函数执行插入 现在,我想在同一个流中的一个选项中使用变量TOTAL。 我该怎么做 尝试了[TOTAL=0]、尝试了[variable:TOTAL=0]和许多其他方法,但无法使其

我得到了一个包含2个查询的Mule流。 第一个简单地验证用户名是否重复

是这样做的: 从username=[json:username]和test\u message\u title=[json:test\u message\u title]的user\u tests中选择count*作为总计

如果TOTAL=0,则第二个函数执行插入

现在,我想在同一个流中的一个选项中使用变量TOTAL。 我该怎么做

尝试了[TOTAL=0]、尝试了[variable:TOTAL=0]和许多其他方法,但无法使其工作

编辑:我制作了一个java组件,从负载中检索0或任何数字。 如何使用选择表达式进行比较

尝试在选择表达式中使用Integer.valueOfmessage.payload=0,但得到一个InvalidExpressionException

这是我的整个流程:

<flow name="ADMIN_INSERT_TEST_FILE" doc:name="ADMIN_INSERT_TEST_FILE">
    <ajax:servlet-inbound-endpoint channel="/admin/save_test_message" responseTimeout="10000" doc:name="Ajax"/>
    <set-variable variableName="#['saved_payload']" value="#[payload]" doc:name="Save original payload"/>
    <jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="validate_test_name" queryTimeout="-1" connector-ref="ExtendedRoutingConnector" doc:name="validate duplicated test name">
        <jdbc:query key="validate_test_name" value="SELECT count(*) AS TOTAL FROM user_tests WHERE username = #[json:username] AND test_message_title = #[json:test_message_title]"/>
    </jdbc:outbound-endpoint>
    <logger message="#[message.payload[0].TOTAL]" level="INFO" category="Total" doc:name="Logger"/>
    <choice doc:name="Choice">
        <when expression="#[message.payload[0].TOTAL == 0]">
            <processor-chain>
                <set-payload value="#[variable:saved_payload]" doc:name="Save Payload"/>
                <jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="insert_user_test_message" queryTimeout="-1" connector-ref="ExtendedRoutingConnector" doc:name="insert user test message">
                    <jdbc:query key="insert_user_test_message" value="INSERT INTO user_tests (username, test_message_title, user_test_message) VALUES (#[json:username], #[json:test_message_title], #[json:message])"/>
                </jdbc:outbound-endpoint>
            </processor-chain>
        </when>
        <otherwise>
            <processor-chain>
                <logger message="Name #[json:test_message_title] already exists" level="INFO" doc:name="Logger"/>
            </processor-chain>
        </otherwise>
    </choice>
</flow>
提前感谢。

使用MEL:

#[message.payload[0].TOTAL == 0]
这将从SELECT查询返回的第一行检索TOTAL列的值。

使用MEL:

#[message.payload[0].TOTAL == 0]

这将从SELECT查询返回的第一行中检索TOTAL列的值。

得到一个错误,原因是:[错误:无法访问属性:message.payload[0].TOTAL];父项为空:message.payload[0].TOTAL]][Near:{…Unknown….}]我可以执行如下操作:[message.payload[0].TOTAL]=0??显示流/SQL端点配置,否则无法帮助您。使用整个Mule流编辑;感谢David的帮助和快速响应。Use==用于比较,=用于赋值。抛出:原因:org.mule.api.MessagineException:无法处理表达式求值json:test_message_title org.mule.api.MuleRuntimeException。消息负载的类型为:ArrayListGet由以下原因导致的错误:[错误:无法访问属性:Message.payload[0]。TOTAL];父项为空:message.payload[0].TOTAL]][Near:{…Unknown….}]我可以执行如下操作:[message.payload[0].TOTAL]=0??显示流/SQL端点配置,否则无法帮助您。使用整个Mule流编辑;感谢David的帮助和快速响应。Use==用于比较,=用于赋值。抛出:原因:org.mule.api.MessagineException:无法处理表达式求值json:test_message_title org.mule.api.MuleRuntimeException。消息负载的类型为:ArrayListReplace variableName=['saved\u payload']和variableName=saved\u payload。将variableName=['saved\u payload']替换为variableName=saved\u payload。