我在文档here中读到
如果batch设置为true,则入站消息正文的解释会稍有变化-组件需要的不是参数迭代器,而是包含参数迭代器的迭代器;外部迭代器的大小决定批处理的大小。
从Camel 2.16开始,您可以使用选项SQL,该选项允许将消息体用作SQL语句,然后必须在具有键SqlConstants.SQL_PARAMETERS的标头中提供SQL参数。这使SQL组件能够更动态地工作,因为SQL查询来自消息体。
我有以下路线:
from("direct:processLine")
.setHeader(SqlConstants.SQL_PARAMETERS, simple("${body}"))
.setBody(constant("INSERT INTO SOME_TABLE "
" (Param1, Param2) " +
" values " +
" (:?Param1,:?Param2)"))
.to("sql://query?useMessageBodyForSql=true&batch=true&dataSource=dataSource");主体是与参数列表匹配的键/值的映射。
这是可行的,但并不像预期的那样。
每一行都是一个接一个地插入,而不是预期的批量插入。这种选择的组合可能吗?
如果不可能,有什么替代方法可以实现这一点呢?
发布于 2015-11-04 04:10:52
当您使用sql时,它将触发多个insert语句来一个接一个地处理。试着使用orm,比如mybatis或ibatis。
甚至你也可以创建一个dao类。调用sqlSession将所有映射值传递给orm,以便作为批处理插入。
https://stackoverflow.com/questions/33365351
复制相似问题