gpt4 book ai didi

java - Camel - 使用 useMessageBodyForSql 进行 Camel SQL 批量插入

转载 作者:太空宇宙 更新时间:2023-11-04 13:18:00 25 4
gpt4 key购买 nike

我在文档中阅读了here那个

“如果将批处理设置为 true,则入站消息正文的解释会略有变化 - 组件需要一个包含参数迭代器的迭代器,而不是参数迭代器;外部迭代器的大小决定批处理大小。”

“从 Camel 2.16 开始,您可以使用 useMessageBodyForSql 选项,该选项允许将消息正文用作 SQL 语句,然后必须在带有键 SqlConstants.SQL_PARAMETERS 的 header 中提供 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");

主体是与参数列表匹配的键/值的映射。

这有效,但不符合预期。

每一行都是逐行插入的,而不是预期的批量插入。这种选项的组合是否可能?

如果不可能,有什么替代方法可以实现这一目标?

最佳答案

当你使用sql时,会触发多条insert语句依次处理。尝试使用像 mybatis 或 ibatis 这样的 orm。

甚至你可以创建一个 dao 类。调用 sqlSession 将所有映射值传递给 orm 以批量插入。

关于java - Camel - 使用 useMessageBodyForSql 进行 Camel SQL 批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33365351/

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