国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - Java教程 - MyBatis通過BATCH批量提交的方法

MyBatis通過BATCH批量提交的方法

2021-06-24 10:39isea533 Java教程

今天小編就為大家分享一篇關(guān)于MyBatis通過BATCH批量提交的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

很多人在用 mybatis 或者 通用 mapper 時,經(jīng)常會問有沒有批量插入和批量更新的方法。

實際上許多時候沒必要用<foreach> 去實現(xiàn)特別復(fù)雜的批量操作。直接通過 mybatis 的 batch 方式執(zhí)行增刪改方法即可。

下面是一個批量用法的例子:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@autowired
private sqlsessionfactory sqlsessionfactory;
@transactional(rollbackfor = exception.class)
@override
public void batchtest() {
  sqlsession sqlsession = sqlsessionfactory.opensession(executortype.batch);
  countrymapper mapper = sqlsession.getmapper(countrymapper.class);
  list<country> countries = mapper.selectall();
  for (int i = 0; i < countries.size(); i++) {
    country country = countries.get(i);
    country.setcountryname(country.getcountryname() + "test");
    mapper.updatebyprimarykey(country);
    //每 50 條提交一次
    if((i + 1) % 50 == 0){
      sqlsession.flushstatements();
    }
  }
  sqlsession.flushstatements();
}

在上面例子中,在service中直接注入了sqlsessionfactory,通過下面方法獲取了一個可以批量提交的sqlsession

?
1
sqlsession sqlsession = sqlsessionfactory.opensession(executortype.batch);

后續(xù)通過sqlsession直接執(zhí)行方法,或者獲取的mapper接口,都使用的批量提交方式。

上述代碼執(zhí)行過程中輸出的日志如下:

debug - creating new transaction with name [com.isea533.mybatis.service.impl.countryserviceimpl.batchtest]: propagation_required,isolation_default
debug - acquired connection [com.alibaba.druid.proxy.jdbc.connectionproxyimpl@752c11a2] for jdbc transaction
debug - switching jdbc connection [com.alibaba.druid.proxy.jdbc.connectionproxyimpl@752c11a2] to manual commit
debug - jdbc connection [com.alibaba.druid.proxy.jdbc.connectionproxyimpl@752c11a2] will be managed by spring
debug - ==>  preparing: select id,countryname,countrycode from country
debug - ==> parameters:
debug - <==      total: 183
debug - ==>  preparing: update country set id = id,countryname = ?,countrycode = ? where id = ?
debug - ==> parameters: angolatest(string), ao(string), 1(integer)
debug - ==> parameters: afghanistantest(string), af(string), 2(integer)
debug - ==> parameters: albaniatest(string), al(string), 3(integer)
==========================================
...省略中間部分參數(shù)
==========================================
debug - ==> parameters: ethiopiatest(string), et(string), 50(integer)
debug - ==>  preparing: update country set id = id,countryname = ?,countrycode = ? where id = ?
debug - ==> parameters: fijitest(string), fj(string), 51(integer)
debug - ==> parameters: finlandtest(string), fi(string), 52(integer)
==========================================
...省略中間部分參數(shù)
==========================================
debug - ==> parameters: madagascartest(string), mg(string), 98(integer)
debug - ==> parameters: malawitest(string), mw(string), 99(integer)
debug - ==> parameters: malaysiatest(string), my(string), 100(integer)
debug - ==>  preparing: update country set id = id,countryname = ?,countrycode = ? where id = ?
debug - ==> parameters: maldivestest(string), mv(string), 101(integer)
debug - ==> parameters: malitest(string), ml(string), 102(integer)
==========================================
...省略中間部分參數(shù)
==========================================
debug - ==> parameters: south africatest(string), za(string), 149(integer)
debug - ==> parameters: spaintest(string), es(string), 150(integer)
debug - ==>  preparing: update country set id = id,countryname = ?,countrycode = ? where id = ?
debug - ==> parameters: sri lankatest(string), lk(string), 151(integer)
debug - ==> parameters: st.luciatest(string), lc(string), 152(integer)
==========================================
...省略中間部分參數(shù)
==========================================
debug - ==> parameters: zairetest(string), zr(string), 182(integer)
debug - ==> parameters: zambiatest(string), zm(string), 183(integer)
==========================================
下面事務(wù)自動提交
==========================================
debug - initiating transaction commit
debug - committing jdbc transaction on connection [com.alibaba.druid.proxy.jdbc.connectionproxyimpl@752c11a2]
debug - releasing jdbc connection [com.alibaba.druid.proxy.jdbc.connectionproxyimpl@752c11a2] after transaction
debug - returning jdbc connection to datasource

注意事項

1. 事務(wù)

由于在 spring 集成的情況下,事務(wù)連接由 spring 管理(springmanagedtransaction),所以這里不需要手動關(guān)閉 sqlsession,在這里手動提交(commit)或者回滾(rollback)也是無效的。

2. 批量提交

批量提交只能應(yīng)用于 insert, update, delete。

并且在批量提交使用時,如果在操作同一sql時中間插入了其他數(shù)據(jù)庫操作,就會讓批量提交方式變成普通的執(zhí)行方式,所以在使用批量提交時,要控制好 sql 執(zhí)行順序。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

原文鏈接:https://blog.csdn.net/isea533/article/details/80922305

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一级大片一级一大片 | 中文字幕色站 | 亚洲精品成人 | 日韩精品在线视频观看 | 欧美一区二区三区在线 | 成人午夜在线 | 国产精品久久久久久久久久妞妞 | 激情五月婷婷 | 精品久久精品久久 | 欧美日韩精品电影 | 日韩精品1区2区3区 国产日韩在线视频 | 国产精品视频专区 | 亚洲免费在线观看 | 在线欧美亚洲 | 国产成人久久精品一区二区三区 | 91亚洲视频| 黄a一级 | 日韩高清在线一区 | 中文字幕在线观看日本 | 超碰伊人网 | 国产精品成人在线 | 久久精品一区二区三区四区 | 婷婷久久综合九色综合绿巨人 | 日韩激情一区二区三区 | 成人国产精品免费观看 | 中文一二区 | 日韩6699人妻熟女毛片 | 日韩免费| 精品无人区一区二区三区动漫 | 日韩成人小视频 | 黄色免费电影网站 | 可以看av的网站 | 国产成人av在线播放 | 国产一级黄色大片 | 久久久99久久 | 久久久久久久久99精品 | 3344视频| 免费看一级黄色片 | 国产999精品久久久久 | 狠狠操av| 亚洲视频中文字幕在线观看 |