在我们的应用程序中,我们有一些用例需要更新数据库表中的大量条目。我们有一个用于与数据库交互的 DataAccess 对象。
更新代码如下所示。
String updateQuery = "UPDATE tbl SET column1=? WHERE column2=?";
for(i=0;;i++){
Map<Integer, Object> params=new HashMap<Integer, Object>();
params.put(1,"val"+i);
params.put(2,"val"+i);
DataAccess.addBatchParams(updateQuery,params);
}
DataAccess.executeBatch(updateQuery);
内部 DataAccess.addBatchParams(..)
public void addBatchParams(String query, Map<Integer,Object> params){
.. // preparedStatements contains all params passed till now.
..
if(preparedStatements.size() >= BATCH_SIZE){
executeBatch(query);
//flush preparedStatements as it has been written to db
}
..
..
}
我担心的是,每当新开发人员使用此功能时,他无法知道他必须在每次批量更新结束时调用 executeBatch() 方法才能将最后几个小于 BATCH_SIZE 的条目刷新到数据库中。有没有更好的方法来做到这一点?是否有任何设计模式或用于进行数据库批量更新的东西?
任何帮助表示赞赏。