mybatis的前身就是著名的ibatis,不知何故脫離了apache改名為mybatis。
mybatis所說是輕量級的orm框架,在網上看過乙個測試報告,感覺相比於hibernate來說,優勢並不明顯。
下面說一下比較有趣的現象,根據mybatis的官方文件,在獲得sqlsession時,它有為批量更新而專門準備的:
session=sessionfactory.opensession();
//用於普通update
session
=sessionfactory.opensession(executortype.batch,
true
);//
用於批量update
一般來說,對mysql資料庫批量操作時速度取決於,是為每乙個處理分別建立乙個連線,還是為這一批處理一共建立乙個連線。按mybatis的手冊說明,選擇executortype.batch意味著,獲得的sqlsession會批量執行所有更新語句。不過我測試了一下,批量插入1000條資料,發覺executortype.batch方式的效率居然比普通的方式
差很多
1<
insert
id="insert"
parametertype
="sdc.mybatis.test.student"
>25
insert into student (id, name, ***,
6address, telephone, t_id 7)
8values (#, #,
9#,
10#, #, #
11)
12insert
>
然後再次測試普通的sqlsession,發現日誌內容中雖然插入了1000條資料,但只新建了一次連線,最後又關閉了該連線(日誌如下)。也就是說mybatis中的普通sqlsession好像已經對批量插入預設是一次連線中完成,那麼還提供executortype.batch方式幹什麼,況且該方式好像效率也不行,或者是我使用executortype.batch方式不對?? debug[main] - created connection
3502256
.debug
[main] - ooo connection opened
debug
[main] -
==>
executing: insert into student
(name
,***
,address
,telephone
,t_id
)values (?
,?,?
,?,?
)debug
[main] -
==>
parameters: 新人0
(string
),male
(string
),addr0
(string
),dd
(string),3
(integer
)debug
[main] -
==>
executing: insert into student
(name
,***
,address
,telephone
,t_id
)values (?
,?,?
,?,?
)debug
[main] -
==>
parameters: 新人1
附錄:mybatis配置檔案的dtd檔案(與ibatis3不同):
mybatis的中文手冊:
MyBatis批量插入 insert 資料操作
在程式中封裝了乙個list集合物件,然後需要把該集合中的實體插入到資料庫中,由於專案使用了spring mybatis的配置,所以打算使用mybatis批量插入,由於之前沒用過批量插入,在網上找了一些資料後最終實現了,把詳細過程貼出來。實體類trainrecord結構如下 1 2 3 4 5 6 7...
關於mybatis的批量修改
listproductskulist new arraylist 商品sku物件 productskuvo productskuvo null for int i 0 i jsonarray.size i productskuvo new productskuvo productskuvo.sets...
MyBatis的關於批量資料操作的測試
摘錄自 mybatis的前身就是著名的ibatis,不知何故脫離了apache改名為mybatis。mybatis所說是輕量級的orm框架,在網上看過乙個測試報告,感覺相比於hibernate來說,優勢並不明顯。下面說一下比較有趣的現象,根據mybatis的官方文件,在獲得sqlsession時,它...