void doSomething(batchSize, someList){
def db = new Sql(datasource)
db.withTransaction{
db.withBatch(batchSize){ stmt ->
someList.each {
String sqlStr = ""
// do something and prepare sqlStr
stmt.addBatch(sqlStr)
}
}
}
}
我正在调用这个函数,当再次查询时,我得到了旧的数据,即使数据库已经更新。可能是什么问题??是withBatch异步还是什么??
1条答案
按热度按时间vpfxa7rd1#
在PreparedStatement上调用executeBatch方法之前,批处理不会执行。请确保在该闭包的末尾调用executeBatch。尝试以下操作:
在此实现中,在添加所有批处理语句后,在PreparedStatement对象stmt上调用executeBatch()。这将作为单个操作执行所有批处理SQL语句。
关于你关于withBatch方法的问题,默认情况下它不是异步的,withBatch方法是同步执行的,每个批处理语句都是按顺序添加到批处理中的,希望这对你有帮助