gpt4 book ai didi

java - Camel mybatis 组件仅支持列表参数,该参数必须命名为 'list' ?

转载 作者:行者123 更新时间:2023-12-02 11:59:17 24 4
gpt4 key购买 nike

当我在项目中使用camel-mybatis组件时,我发现list参数必须命名为'list'

下面的示例有效:

from(xxx)
...
...
.setHeader("list",simple("${body.OriginCodeList}"))
.to("mybatis:selectByInnerCodeList?statementType=SelectList&inputHeader=list")

mybatis 映射器 xml:

<select id="selectByInnerCodeList" resultMap="BaseResultMap" parameterType="java.util.List">
select
<include refid="Base_Column_List" />
from MF_FundManagerNew
WHERE Incumbent=1
<if test="list!=null and list.size()>0 ">
and InnerCode IN
<foreach collection="list" item="innerCodeSingle" open="(" close=")" separator=",">
#{innerCodeSingle}
</foreach>
</if>
</select>

成功了

此路线失败

from(xxx)
...
...
.setHeader("innerCodeList",simple("${body.OriginCodeList}"))
.to("mybatis:selectByInnerCodeList?statementType=SelectList&inputHeader=innerCodeList")

mybatis 映射器 xml:

<select id="selectByInnerCodeList" resultMap="BaseResultMap" parameterType="java.util.List">
select
<include refid="Base_Column_List" />
from MF_FundManagerNew
WHERE Incumbent=1
<if test="innerCodeList!=null and innerCodeList.size()>0 ">
and InnerCode IN
<foreach collection="innerCodeList" item="innerCodeSingle" open="(" close=")" separator=",">
#{innerCodeSingle}
</foreach>
</if>
</select>

第二个示例引发以下异常:

Error querying database.  Cause: org.apache.ibatis.binding.BindingException: 
Parameter 'innerCodeList' not found. Available parameters are [collection, list]
Cause: org.apache.ibatis.binding.BindingException: Parameter 'innerCodeList' not found. Available parameters are [collection, list]
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) ~[mybatis-3.4.1.jar:3.4.1]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150) ~[mybatis-3.4.1.jar:3.4.1]
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141) ~[mybatis-3.4.1.jar:3.4.1]
at org.apache.camel.component.mybatis.MyBatisProducer.doSelectList(MyBatisProducer.java:117) ~[camel-mybatis-2.20.0.jar:2.20.0]
at org.apache.camel.component.mybatis.MyBatisProducer.process(MyBatisProducer.java:63) ~[camel-mybatis-2.20.0.jar:2.20.0]
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) ~[camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148) ~[camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) [camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:138) [camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:101) [camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.processor.FilterProcessor.process(FilterProcessor.java:57) [camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548) [camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) [camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:97) [camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.component.mybatis.MyBatisConsumer.processBatch(MyBatisConsumer.java:130) [camel-mybatis-2.20.0.jar:2.20.0]
at org.apache.camel.component.mybatis.MyBatisConsumer.poll(MyBatisConsumer.java:100) [camel-mybatis-2.20.0.jar:2.20.0]
at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174) [camel-core-2.20.0.jar:2.20.0]
at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101) [camel-core-2.20.0.jar:2.20.0]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_144]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_144]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_144]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_144]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_144]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_144]

最佳答案

让我把我的评论作为答案:

在 MyBatis 中如果你绑定(bind) Collection直接对象,那么它将在 MyBatis XML 中作为 collection 提供。或list变量,因为它默认为该名称。

如果您需要使用不同的 key ,那么您可以将其包装在具有属性 innerCodeList 的对象中或将其放入 Map key 为innerCodeList 。在这种情况下 parameterType对于 <select>将是YourCustomClassmap

关于java - Camel mybatis 组件仅支持列表参数,该参数必须命名为 'list' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47384338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com