Apache camel Apache Camel mybatis在每次插入后提交,但不希望

Apache camel Apache Camel mybatis在每次插入后提交,但不希望,apache-camel,mybatis,Apache Camel,Mybatis,在插入、删除或更新之后,我似乎无法阻止mybatis提交()。我想自己控制这一切 from( A ) (begin) ... do some processing ... lots of .to( "mybtis:insertX?statementType=insertList" ) (commit) 并且已经编写了一些映射来实现这一点,但是在上面的每个insertList和delete之后,mybatis会立即提交。我不确定如何告诉它停止这样做,并且我担心通过查看源代码,commit()

在插入、删除或更新之后,我似乎无法阻止mybatis提交()。我想自己控制这一切

from( A )
(begin)
... do some processing ...
lots of 
.to( "mybtis:insertX?statementType=insertList" )

(commit)
并且已经编写了一些映射来实现这一点,但是在上面的每个insertList和delete之后,mybatis会立即提交。我不确定如何告诉它停止这样做,并且我担心通过查看源代码,commit()不可避免地内置在mybatis DefaultSqlSession中的那些函数中,例如,似乎硬连接了commit()(当然,它可能是mybatis会话提交,而不是db提交,但很难说)

我可能可以通过临时表和其他东西实现类似的效果,但它看起来很混乱,如果存在的话,我更愿意使用正确的机制

我希望它可以在mybatis配置URI上配置


也许我只是不太了解mybatis,所以不知道如何做这件事。

您是正确的,每次调用
.to(“mybtis:insertX?statementType=insertList”)
都会自动提交,但您可以传入一个要一次提交的列表

from( A )
(begin)
... do some processing ...
... aggregate into a List ... 
.to( "mybtis:insertX?statementType=insertList" ) //commits once after entire List is inserted

@boday-hm,我似乎失去了“评论”的选择

是的,但这就是问题所在,我要插入的批次太大了,我需要将其分成10000个组,否则mybatis会不幸中断。我以前也做过表删除。我希望他们在没有承诺的情况下为特殊的事情留下某种“后门”

我有一种感觉,我可能需要使用一个临时表,并进行某种“重命名”,以获得我正在寻找的原子效果


我要看看另一个人提到的“openSession”。我还想到,我完全可以用我自己的自定义“SqlSession”将commit()方法改为基本上什么都不做,这也不会太糟糕,因为它只是一种方法,但显然非常不理想。

连接的
autoCommit
设置为true。您能解释一下连接是如何配置的吗?您是否正在使用任何连接池?