2014-01-07 1 views
1
<jdbc-ee:mysql-data-source name="MySQL_Data_Source" user="root" password="root" url="jdbc:mysql://localhost:3306/test" transactionIsolation="UNSPECIFIED" doc:name="MySQL Data Source"/> 
<jdbc-ee:connector name="test" dataSource-ref="MySQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"/> 
<data-mapper:config name="DataMapper" transformationGraphPath="mapper.grf" doc:name="DataMapper"/> 
<flow name="EmployeeListFlow1" doc:name="EmployeeListFlow1"> 
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8082" doc:name="HTTP" path="employeelist"/> 
    <json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.Map"/> 
    <choice doc:name="Choice"> 
     <when expression="payload.storeId == null || payload.storeId &lt;= 0 "> 
      <set-variable variableName="query" value="select e.employeeid,e.companyid,e.firstName,e.lastName from employees e where companyid = #[message.payload.companyId]" doc:name="CompanyId"/> 
     </when> 
     <otherwise> 
      <set-variable variableName="query" value="select e.employeeid,e.companyid,e.firstName,e.lastName from employees e where employeeid in (select employeeid from employeestores where storeid =#[message.payload.storeId])" doc:name="StoreId"/> 
     </otherwise> 
    </choice> 
    <jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryTimeout="-1" doc:name="EmployeeListFetch" connector-ref="Theatro" queryKey="employees_list"> 
     <jdbc-ee:query key="employees_list" value="#[flowVars['query']]"/> 
    </jdbc-ee:outbound-endpoint> 
    <json:object-to-json-transformer doc:name="Object to JSON"/> 
</flow> 

Как получить доступ к потоку вары в JDBC конечной точки в студии применении мула

Исключение:

Root стека исключений трассировка: java.lang.IllegalArgumentException: Нет SQL Стратегии найдена для SQL заявления: # [flowVars [ 'запрос']] в com.mulesoft.mule.transport.jdbc.sqlstrategy.EESqlStatementStrategyFactory.create (EESqlStatementStrategyFactory.java:109) в org.mule.transport.jdbc.JdbcMessageDispatcher.doSend (JdbcMessageDispatcher.java: 69) по адресу org.mule.transport.Ab stractMessageDispatcher.process (AbstractMessageDispatcher.java:81) + более 3 (набор отладки протоколирования уровня или «-Dmule.verbose.exceptions = True» для всего)

Здесь я хочу построить динамически JDBC запрос на основе входных данных.

json data {"companyId": "1", "storeId": "1"} Пожалуйста, помогите мне.

+0

Вы пробовали что-нибудь? –

+0

№. Я пробовал только с этим кодом – user3169580

ответ

0

попробовать использовать что-то вроде следующего для JDBC динамических исходящих оконечных:

<outbound-endpoint address="jdbc://select * from ${datasource.table} #[variable:where-statement]" exchange-pattern="request-response"/> 

НТН

0

Есть 2 ошибки здесь,
В Выбора выражение отсутствует []
Что-то вроде <when expression="[payload.storeId == null || payload.storeId &lt;= 0] ">
и следующий ваш запрос должен выглядеть примерно так: -

select e.employeeid,e.companyid,e.firstName,e.lastName from employees e where employeeid in (select employeeid from employeestores where storeid ='#[message.payload.storeId]') 

Где #[message.payload.storeId] должен быть внутри '', как StoreID является строка

Смежные вопросы