Parameters 如何将参数传递给Camel中的myBatis组件?

Parameters 如何将参数传递给Camel中的myBatis组件?,parameters,cxf,apache-camel,mybatis,ibatis,Parameters,Cxf,Apache Camel,Mybatis,Ibatis,如何为myBatis组件提供所需的查询参数?我想用selection by id执行一个简单的Select语句。最好的解决方案是直接从Cxf负载自动提取参数 我没有为myBatis映射使用任何域类。 使用getAll方法时,Route工作正常 到目前为止,我的路线如下所示: @Override public void configure() throws Exception { from(cxfEndpoint).to("mybatis:getById?statementType=Sel

如何为myBatis组件提供所需的查询参数?我想用selection by id执行一个简单的Select语句。最好的解决方案是直接从Cxf负载自动提取参数

我没有为myBatis映射使用任何域类。 使用getAll方法时,Route工作正常

到目前为止,我的路线如下所示:

@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>

你应该用Id本身填充你的身体。它可以是Integer类型的对象:

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

其中123是您的Ide。

您应该用Id本身填充您的身体。它可以是Integer类型的对象:

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

其中123是您的Ide。

您可以设置一个标头,并使用inputhreader参数将其传递给mybatis

例如:

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

您可以使用inputHeader参数设置标头并将其传递给mybatis

例如:

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

我理解交换主体的方式必须是一个带有getId方法的对象。myBatis组件将使用返回值填充命名参数。@Ralf,如果不创建专用对象,就没有办法做到这一点?至少文档中没有提到能够使用exchange标头或存储为exchange属性的对象。我理解exchange主体的方式必须是具有getId方法的对象。myBatis组件将使用返回值填充命名参数。@Ralf,如果不创建专用对象,没有任何方法可以做到这一点?至少文档中没有提到能够使用exchange标头或存储为exchange属性的对象。谢谢,这不再是2014年的事了,但可能会有所帮助:谢谢,现在已经不是2014年了,但可能会有所帮助: