最近遇到需要批量处理数据的问题,一开始用了一个for循环去执行,数据量大的时候效率很低。原因是for循环每次执行一条语句,都是一次连接过程。遇到大批数据更新的时候,效率就可想而知了。最后baidu后发现ibatis里有对批量操作,挺好的东西。
/**
* 批量操作:保存电台信息
* @Function: saveListRadioStationMsg
* @Description:
* @param list 电台信息列表
* @exception/throws description
*/
public void saveListRadioStationMsg(final List<RadioStation> list) throws Exception {
if (list != null && list.size() > 0) {
//批量操作
this.getSqlMapClientTemplate().execute(
new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
//开启批量操作
executor.startBatch();
for (int i = 0, n = list.size(); i < n; i++) {
//saveRadioStationMsg对应的插入语句
executor.insert("saveRadioStationMsg", list.get(i));
}
//结束批量操作
executor.executeBatch();
return null;
}
}
);
}
}