Question

How can I provide myBatis component with desired query parameters? I want to perfom a simple Select statement with selection by id. The best solution would be a possibility of having automatic parameter extraction directly from Cxf payload.

I'm not using any domain classes for myBatis mapping. Route works fine when using getAll method.

So far, my route looks like this:

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

and my mapper configuration:

<?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>
Was it helpful?

Solution

You should just populate your body with the Id itself. It can be just an object of type Integer:

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

where 123 is your Ide.

OTHER TIPS

You can set a header and pass it to mybatis using inputHeader parameter.

Example:

from(cxfEndpoint)
  .setHeader("myHeader").simple("some value")
  .to("mybatis:getById?statementType=SelectList?inputHeader=myHeader")
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top