2014-02-19 67 views
0

如何爲myBatis組件提供所需的查詢參數?我想用id選擇一個簡單的Select語句。最好的解決方案是可以直接從Cxf有效載荷中自動提取參數。如何將參數傳遞給Camel中的myBatis組件?

我沒有爲myBatis映射使用任何域類。 使用getAll方法時,路由工作正常。

到目前爲止,我的路線是這樣的:

@Override 
public void configure() throws Exception { 
    from(cxfEndpoint).to("mybatis:getById?statementType=SelectList") 
    }); 

和我的映射配置:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE mapper 
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 

<mapper namespace="User"> 

    <select id="getAll" resultType="map"> 
     SELECT * FROM USERS 
    </select> 

    <select id="getById" parameterType="int" resultType="map"> 
     SELECT * FROM USERS WHERE ID = #{id} 
    </select> 

</mapper> 
+0

我明白[文檔]的方式(https://camel.apache.org/mybatis.html)的交換的主體具有要與一個的getId的對象()方法。 myBatis組件將使用返回的值來填充指定的參數。 – Ralf

+0

@Ralf,沒有創建專用對象的方法嗎? –

+0

至少文檔沒有提及任何有關能夠使用交換標題或存儲爲交換屬性的對象的任何信息。 – Ralf

回答

1

你應該只填寫你的身體與標識本身。它可以只是Integer類型的一個對象:

from(cxfEndpoint).setBody(Integer.valueOf(123)).to("mybatis:getById?statementType=SelectList") 

其中123是你的Ide。

1

您可以使用inputHeader參數設置標題並將其傳遞給mybatis。

實施例:

from(cxfEndpoint) 
    .setHeader("myHeader").simple("some value") 
    .to("mybatis:getById?statementType=SelectList?inputHeader=myHeader") 
+2

謝謝,這不是2014年,但可以幫助:) –

相關問題