2015-11-23 2 views
0

Я это mule flow:Mule - Объект параметров в базе данных

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.5.2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd 
http://www.mulesoft.org/schema/mule/ee/tracking http://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsd 
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd"> 

    <spring:beans> 

     <spring:bean id="propertyConfigurer" 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
      <spring:property name="locations"> 
       <spring:list> 
        <spring:value>configSQL.properties</spring:value> 
       </spring:list> 
      </spring:property> 
     </spring:bean> 

    </spring:beans> 

    <db:generic-config name="BBDD_USER" doc:name="Generic Database Configuration" driverClassName="net.sourceforge.jtds.jdbc.Driver" 
    url="${sql.url}/${sql.database};user=${sql.username};password=${sql.password}"/> 

    <flow name="sincro-sql" doc:name="sincro-sql"> 

     <http:inbound-endpoint exchange-pattern="one-way" host="localhost" port="8042" doc:name="HTTP"/> 

     <logger message="#[message.payloadAs(java.lang.String)]" level="INFO" doc:name="JSON"/> 

     <json:json-to-object-transformer doc:name="JSON to Object" returnClass="json.database.object.Data"/> 

     <db:stored-procedure config-ref="BBDD_USER" doc:name="Data" source="json.database.object.Data" streaming="true"> 
      <db:parameterized-query><![CDATA[{ CALL dbo.ExecSQL(:table_name, :field_name) }]]></db:parameterized-query> 
      <db:in-param name="field_name" type="VARCHAR" value="field_test"/> 
      <db:in-param name="table_name" type="VARCHAR" value="table_test"/> 
     </db:stored-procedure> 

    </flow> 
</mule> 

Он получает JSON, что я преобразование объекта с класса, который содержит:

@JsonAutoDetect  
public class Data{ 

     private String table_name; 
     private String field_name; 

     public void setTableName(String table_name) { 
      this.table_name= table_name; 
     } 

     public String getTableName() { 
      return table_name; 
     } 

     public void setFieldName(String field_name) { 
      this.field_name= field_name; 
     } 

     public String getFieldName() { 
      return field_name; 
     } 
    } 

И, наконец, я звоню в свою базу данных. Как я могу назначить, к примеру, свойства об имени таблицы из классапараметру в базах данных элемента?

Например,

<db:in-param name="table_name" type="VARCHAR" value="PROPERTY OF CLASS"/> 

ответ

1

Использование MEL (Mule Выражение Langauge) и стандартный вызов метода Java. Поскольку Data - это полезная нагрузка, используйте # [payload.table_name]. MEL автоматически использует геттер для этого поля.

+0

Спасибо, если это массив, что я должен использовать? – user1911

+0

ну, если вы хотите получить определенный элемент в массиве, вы можете получить к нему доступ по индексу: # [полезная нагрузка [0] .table_name] –

+0

Извините, я опубликовал новый ответ, чтобы объяснить более подробно: http://stackoverflow.com/ вопросы/33892365/mule-object-from-array-to-parameter-in-database Спасибо – user1911

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