如何在 Spring Ibatis DAO 实现类中编写事务。
我正在使用以下代码进行批量更新。但是更新 200 条记录需要 10 多秒。当我在谷歌中搜索时,我发现如果我们在此批量更新中实现事务,它会更快地工作。
我的批量更新代码是这样的(在SensorValueLastBeanDAOImpl类中)
public int processBatchUpdate(
final List<SensorValueLastBean> sensorValueLast) {
Integer updateCount = 0;
try {
updateCount = (Integer) getSqlMapClientTemplate().execute(
new SqlMapClientCallback<Object>() {
public Object doInSqlMapClient(SqlMapExecutor executor)
throws SQLException {
executor.startBatch();
Iterator<SensorValueLastBean> iter = sensorValueLast
.iterator();
while (iter.hasNext()) {
executor.update(
"sensor_values_last.ibatorgenerated_updateByPrimaryKeySelective",
iter.next());
}
executor.executeBatch();
return new Integer(executor.executeBatch());
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
当我在此函数中使用 getSqlMapClient().startTransaction() 时,它显示如下错误
java.lang.NullPointerException 在 com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.startTransaction(SqlMapExecutorDelegate.java:684)
在 com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.startTransaction(SqlMapSessionImpl.java:164)
在 com. ibatis.sqlmap.engine.impl.SqlMapClientImpl.startTransaction(SqlMapClientImpl.java:140)