是否可以使用jdbcTemplate进行无事务的多语句

时间:2016-04-21 13:14:59

标签: java sql spring jdbctemplate

我试图在第一个插入的索引插入第二个表的同时更新2个表。 sql看起来像这样:

DECLARE @nrTable table (TXT_nr int)
IF NOT EXISTS (SELECT txt FROM tbl1 WHERE txt = (?))
INSERT INTO tbl1 (txt, new) OUTPUT INSERTED.nr INTO @nrTable VALUES((?), 1)

IF NOT EXISTS (SELECT txt FROM tbl1 WHERE txt =(?)) 
INSERT INTO tbl2 (TXT_nr, field1, field2)
VALUES((SELECT TXT_nr FROM @nrTable), (?), (?))
WHERE field3 = (?) AND field4 = (?)

我正在尝试使用

来实现这一目标
this.jdbcTemplate.batchUpdate(sql, batch);

简单地使用基本字符串连接java中的行。但这似乎只执行第一个语句。 现在,我不想以事务方式执行此操作的原因是,由于ouput-clause,我必须使用一次只插入一个批处理对象的循环。这将导致对sql-server的大量调用。

有没有任何已知的方法来完成这样的事情?

1 个答案:

答案 0 :(得分:0)

您不能以这种方式使用batchupdate。请参阅此文档http://tutorials.jenkov.com/jdbc/batchupdate.html

为了实现您的目标,如果您在sql中使用序列,那么您需要在java中获取新值并将其存储在查询中。像这样:

MVC