1
我有一个像下面这样的查询,并想知道通过批处理PreparedStatement产生了什么样的SQL。在Java中,PreparedStatement如何为以下查询工作
INSERT INTO table1 (id, version, data)
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE
table1.data = IF(table1.version > table2.version, table1.data, table2.data),
table1.version = IF(table1.version > table2.version, table1.version, table2.version)
的问题是,将它解析这在批这整个SQL字符串的每一行的副本还是会做这样的事情:
INSERT INTO table1 (id, version, data)
VALUES (a1, b1, c1), (a2, b2, c2), (a3, b3, c3), ...
ON DUPLICATE KEY UPDATE
table1.data = IF(table1.version > table2.version, table1.data, table2.data),
table1.version = IF(table1.version > table2.version, table1.version, table2.version)
如果不是,有什么表现这意味着什么,我如何编写它,以便我可以使用PreparedStatement对许多INSERT..UPDATE语句进行批处理,而不会导致性能损失?