1. 程式人生 > >Ibatis的批量操作和事務管理。

Ibatis的批量操作和事務管理。

轉自:http://zhidao.baidu.com/link?url=_lvbPYhLUGyZxfIswK6qqAiDa8jeTZ0mOVJoef9e8fadMw9yCRlBp8HT3ZDLyEomxTm-z5W_yn4NE_ZBjLjpN_

你用的應該是ibatis,這裡是批量刪除,相當於把一堆操作用一個事務來提交,提高資料庫效能。
//函式功能,刪除list中的所有元素在資料庫中的記錄。
protected void batchDelete(List<?> lst, String statement)
    throws SQLException
  {
    getSqlMapClient().startBatch();//開始批量操作
  //遍歷list
    for (Iterator localIterator = lst.iterator(); localIterator.hasNext(); ) 
    { 
      Object obj = localIterator.next();
      getSqlMapClient().delete(statement, obj);//statement表示你呼叫的刪除方法,在
xml檔案
中定義的。 } getSqlMapClient().executeBatch();//結束批量操作 }

再如:

public void deleteList(List modelList, Class<? extends PersistentObject> clazz) throws ApplicationException {
if(modelList == null || modelList.size() == 0){
throw new ApplicationException("物件不能為空");
}
String sqlMapId = clazz.getSimpleName()+"_base_insert";
//啟動批量操作
try {
IbatisHelper.getSqlMapClient().startBatch();
for(int i=0; i<modelList.size(); i++){
IbatisHelper.getIBaseDao().delete(sqlMapId, modelList.get(i));
}
//執行批量操作
IbatisHelper.getSqlMapClient().executeBatch();
} catch (SQLException e) {
throw new ApplicationException("刪除失敗", e);
}

}