mybatis 中的批量新增、刪除、修改
阿新 • • 發佈:2019-01-31
現在很多公司和個人開始都會使用到mybatis 框架,而mybatis框架是一個orm框架,所以 資料庫的 insert 、update、 delete 那肯定是必須的,但有個問題就是效能的問題。
這麼說吧:看到有人在使用mybatis批量刪除批量新增的時候還在程式中使用for迴圈來呼叫方法,這樣是沒錯,但是效能稍微低一點,所以下面看幾個批量處理的例子,相對直接在程式中for迴圈的效率要高一點:
1、批量新增:
- <insertid="batchInsert"parameterType="java.util.List">
-
INSERT INTO STUDENT (id,name,sex,tel,address)
- VALUES
- <foreachcollection="list"item="item"index="index"separator=",">
- (#{item.id},#{item.name},#{item.sex},#{item.tel},#{item.address})
- </foreach>
- </insert>
2、批量修改:
- <updateid="batchUpdate"parameterType="java.util.List">
-
UPDATE STUDENT SET name
- <foreachcollection="list"item="item"index="index"open="("separator=","close=")">
- #{item}
- </foreach>
- </update>
3、批量刪除:
- <deleteid="batchDelete"parameterType="java.util.List">
- DELETE FROM STUDENT WHERE id IN
-
<foreachcollection
- #{item}
- </foreach>
- </delete>
這種批量插入、修改、刪除的方式比程式中for迴圈呼叫快原因如下:(1)、網路間傳遞的資料量少,當然傳遞的時間就少了很多。(2)、請求資料庫服務的次數少,因為連線資料庫服務是很耗時的(所以出了資料庫連線池)。(3)、mybatis 在執行的時候才會獲取Connection ,statement 物件所以想不for迴圈少建立了很多物件。
(4)、mybatis 的 執行方式有三種即:SIMPLE、REUSE、BATCH 三種方式,如果方便的話設定一下,如果使用SIMPLE每一次執行都建立Statement物件並執行,如果使用REUSE 則重複使用preparedStatement 物件來執行 而BATCH 就是批量執行了而mybatis預設就是使用 SIMPLE 方式來執行,所以我們要注意最起碼是不是應該是REUSE 執行方式。
三種執行方式之前的文章中已介紹過了,這裡就不重複。三種執行方式文章地址