是否有可能以某种方式混合PreparedStatement批处理和Statement批处理,并保持双方在单个事务中执行的好处?将PreparedStatement批处理与Statement批处理混合在一起,有可能吗?
我有什么是我自己的数据访问对象,它代表事务。我想用这样的:
/* here transaction starts: object receive connection, etc. */
MyTableTransactionObject myTable = new MyTableTransactionObject();
myTable.clear();
myTable.insert(Row1);
myTable.insert(Row2);
myTable.insert(Row3);
myTable.doSomethingElse();
myTable.insert(Row4);
/* here transaction ends, batches are executed changes are commited,
statements are closed */
myTable.execute();
myTable.close();
“引擎盖下” MyTableTransactionObject的有using语句或预处理语句(可能有多个预处理语句)的方法。例如:在clear()
方法我想用statement.addBatch("DELETE FROM table;")
,在insert(...)
方法我想用特殊的PreparedStatement执行SQL INSERT
操作,在doSomethingElse(...)
我想用不同的PreparedStatement做别的事情,等
我怎样才能实现执行这些陈述为了他们被称为myTable.execute()
?
如果你使用MySQL,请确保您能够在驱动程序级别rewriteBatchedStatements该解决方案使用自动提交(真实):http://dev.mysql.com/doc/refman/5.5/en /connector-j-reference-configuration-properties.html – 2012-04-26 03:13:13