主要是org.apache.ibatis.executor.batchexecutor這個類,此類繼承baseexecutor(基本增刪改查,快取,懶載入處理)
batchexecutor這個類有四個屬性
//批處理更新最大返回結果
public static final int batch_update_return_value = integer.min_value + 1002;
//存放宣告(命令)物件集合
private final liststatementlist = new arraylist();
// 批處理結果集合
private final listbatchresultlist = new arraylist();
//當前sql語句
private string currentsql;
乙個帶引數建構函式,傳入配置資訊和事務物件
public batchexecutor(configuration configuration, transaction transaction)
重寫了三個方法, 1.更新方法 2.查詢方法 3.重新整理方法
我們來看批量更新doupdate
throws sqlexception else
handler.parameterize(stmt);
handler.batch(stmt);
return batch_update_return_value;}
最重要一句話就是handler.batch(stmt),實際上就是stmt.addbatch();
舉個小例子來說明:
//記錄1
stmt.setint(1, 1);
stmt.setstring(2, "cujo");
stmt.addbatch();
//記錄2
stmt.setint(1, 2);
stmt.setstring(2, "fred");
stmt.addbatch();
//記錄3
stmt.setint(1, 3);
stmt.setstring(2, "mark");
stmt.addbatch();
//批量執行上面3條語句
int counts = statement.executebatch();
//commit it
connection.commit();
如果專案中要用到批量更新如何使用?
下面的對映檔案,假設namespace="com.dao.stuent"
select current_timestamp()
insert into kangaiduoyaodian ( depart1, depart2, product_name,
generic_name, img, product_specification, unit,
website, fetch_time, productdesc ) values
( #, #, #,
#, #,
#, #,
#, #, #,
#, # )
呼叫: sqlsession session = factory.opensession(executortype.batch); //關鍵是這句
原文:
mybatis原始碼閱讀之9 批量插入資料
在做專案的工程中,遇到過各種mybatis批量插入資料的需求。在各種水平的架構師提供的框架封裝中,也出現了好幾種對批量處理的不同封裝。根據我看過的 大致可以分三種情況。autowired for entertypedo d list 這是一種完全不負責任的做法,資料量大到一定級別時,插入很慢,而且可...
Elasticsearch(三) 批量操作
語法 什麼是partial update?put index type id,建立文件 替換文件,就是一樣的語法 一般對應到應用程式中,每次的執行流程基本是這樣的 1 應用程式先發起乙個get請求,獲取到document,展示到前台介面,供使用者檢視和修改 2 使用者在前台介面修改資料,傳送到後台 ...
Mybatis 原始碼分析
mybatis解析 2 sqlsessionfactorybean 繼承了 initializingbean 介面,在bean解析的finishbeanfactoryinitialization 的方法對 initializingbean介面中的 afterpropertiesset 方法進行呼叫,...