我们正在使用spring + mybatis + sqlserver。
场景就像我们有一个表,假设是transaction_table。我们在使用jdbc入站通道时收到了一些数据。获取数据后,我们在此表中插入。我们在此表中有一个状态列。
每个步骤后都需要更新。我们有一个持久层类,它具有调用dao层方法的所有数据库函数。我们正在使用注释进行事务处理..为此我们在方法的顶部添加了@Transaction。
在dao.xml中我们写了类似的东西 -
INSERT INTO TRANSACTION_DETAIL(
Column_1, Column_2, Column_3, Column_4
)
<foreach collection="transactionsSubLst" item="element" index="index" separator="union all">
SELECT
#bean.prop,jdbcType=INTEGER,
#bean.prop2,jdbcType=VARCHAR,
#bean.prop3,jdbcType=VARCHAR,
#bean.prop3,jdbcType=VARCHAR
</foreach>
<foreach collection="transactionsSubList" item="element" index="index" separator=";">
UPDATE TRANSACTION_DETAIL
<set>
Column_3=#element.targetSystem,
Column_4=#element.ruleName,
Column_2=#element.ruleVersion,
Column_1=#element.weightage
</set>
<where>
Column_1=#element.transactionNo
AND Column_2=#element.requestNumber
</where>
</foreach>
当我们在单个节点上运行它时...我们很好,但是当我们移动到多个节点时,我们开始在更新时获得DeadLock ..