亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

MyBatis通過BATCH批量提交的方法

2024-07-14 08:43:19
字體:
來源:轉載
供稿:網友

很多人在用 MyBatis 或者 通用 Mapper 時,經常會問有沒有批量插入和批量更新的方法。

實際上許多時候沒必要用<foreach> 去實現特別復雜的批量操作。直接通過 MyBatis 的 BATCH 方式執行增刪改方法即可。

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

@Autowiredprivate SqlSessionFactory sqlSessionFactory;@Transactional(rollbackFor = Exception.class)@Overridepublic 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

SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);

后續通過SqlSession直接執行方法,或者獲取的Mapper接口,都使用的批量提交方式。

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

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)
==========================================
...省略中間部分參數
==========================================
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)
==========================================
...省略中間部分參數
==========================================
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)
==========================================
...省略中間部分參數
==========================================
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)
==========================================
...省略中間部分參數
==========================================
DEBUG - ==> Parameters: ZaireTest(String), ZR(String), 182(Integer)
DEBUG - ==> Parameters: ZambiaTest(String), ZM(String), 183(Integer)
==========================================
下面事務自動提交
==========================================
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. 事務

由于在 Spring 集成的情況下,事務連接由 Spring 管理(SpringManagedTransaction),所以這里不需要手動關閉 sqlSession,在這里手動提交(commit)或者回滾(rollback)也是無效的。

2. 批量提交

批量提交只能應用于 insert, update, delete。

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩欧美精品在线观看| 激情av一区二区| 丝袜亚洲另类欧美重口| 国产自产女人91一区在线观看| 国产91在线视频| 国内精品400部情侣激情| 97精品国产97久久久久久春色| 综合av色偷偷网| 91精品久久久久久久久久久久久久| 亚洲精品自产拍| 亚洲国产成人一区| 久久全球大尺度高清视频| 久久在线免费视频| 日韩在线中文字| 国产午夜一区二区| 55夜色66夜色国产精品视频| 日韩福利伦理影院免费| 国产精品亚洲片夜色在线| 精品国产欧美成人夜夜嗨| 亚洲一区二区精品| 国产精品成人va在线观看| 国产成人一区二| 日韩在线免费高清视频| 国产欧美日韩中文字幕| 97精品久久久| 日韩黄色高清视频| 久久香蕉国产线看观看网| 日韩免费在线观看视频| 亚洲视频在线免费看| 亚洲二区在线播放视频| 亚洲在线免费看| 色七七影院综合| 国产成人精品亚洲精品| 久久久久久久av| 国产视频福利一区| 欧美国产日韩中文字幕在线| 激情久久av一区av二区av三区| 国产香蕉一区二区三区在线视频| 有码中文亚洲精品| 日韩中文字幕久久| 亚洲欧洲在线视频| 色综合久久精品亚洲国产| 精品国产一区二区三区久久| 欧美高清视频在线| 国产99久久精品一区二区| 日韩成人高清在线| 国产精品老牛影院在线观看| 亚洲精品视频在线观看视频| 欧美日韩精品国产| 国产91|九色| 亚洲黄页视频免费观看| 成人福利在线视频| 91精品国产综合久久久久久久久| 日韩精品免费综合视频在线播放| 中文字幕亚洲欧美| 成人福利网站在线观看| 国产精品成人播放| 国产一区二区成人| 麻豆国产精品va在线观看不卡| 日韩一区二区三区xxxx| 欧美性生活大片免费观看网址| 国产亚洲精品激情久久| 日韩综合中文字幕| 欧美日韩美女在线| 在线观看中文字幕亚洲| 亚洲国产欧美一区二区三区久久| 欧美日韩成人在线观看| 98精品在线视频| 亚洲一区二区三区在线免费观看| 欧美激情在线视频二区| 欧美xxxx14xxxxx性爽| 亚洲精品成人久久电影| 午夜精品蜜臀一区二区三区免费| 亚洲国产精品嫩草影院久久| 亚洲人a成www在线影院| 亚洲精品丝袜日韩| 欧美午夜激情视频| 欧美激情性做爰免费视频| 欧美极品欧美精品欧美视频| 成人午夜在线观看| 亚洲精品mp4| 亚洲999一在线观看www| 国产suv精品一区二区三区88区| 亚洲综合中文字幕68页| 精品日本美女福利在线观看| 欧洲亚洲在线视频| 亚洲jizzjizz日本少妇| 国产精品视频网址| 在线观看国产精品91| 中文字幕欧美日韩| 亚洲伊人成综合成人网| 国产欧美中文字幕| 欧美另类暴力丝袜| 777777777亚洲妇女| 美女国内精品自产拍在线播放| 成人国产精品久久久久久亚洲| 精品少妇v888av| 亚洲午夜精品视频| 欧美裸体xxxx极品少妇| 懂色av影视一区二区三区| 2020欧美日韩在线视频| 91精品久久久久久久久久久| 成人欧美一区二区三区在线| 国产亚洲欧美视频| 日韩最新免费不卡| 亚洲国产精品va在线看黑人| 欧美激情国产高清| 久久久国产视频91| 午夜精品蜜臀一区二区三区免费| 正在播放亚洲1区| 国产精品扒开腿做爽爽爽视频| 欧美精品久久久久久久免费观看| 亚洲国产天堂久久国产91| 久久久精品久久久| 精品亚洲国产成av人片传媒| 中文字幕精品www乱入免费视频| 欧美老女人bb| 欧美有码在线视频| 91亚洲国产成人精品性色| 成人性教育视频在线观看| 日韩av片免费在线观看| 国产精品久久久久久久久免费看| 69**夜色精品国产69乱| 欧美性猛交xxxx免费看漫画| 裸体女人亚洲精品一区| 日韩精品免费视频| 第一福利永久视频精品| 精品久久久久久久久久久久| 午夜精品久久久久久久久久久久久| 亚洲国产精品字幕| 亚洲午夜av电影| 欧美极品少妇xxxxⅹ免费视频| 欧美电影在线免费观看网站| 久久伊人免费视频| 国产精品av网站| 成人在线视频福利| 久久久久五月天| 91久久精品日日躁夜夜躁国产| 国产v综合v亚洲欧美久久| 国产精品无av码在线观看| 麻豆国产精品va在线观看不卡| 国产日韩在线播放| 欧美丝袜美女中出在线| 欧美中文字幕第一页| 欧美人与物videos| 欧美亚洲另类激情另类| 精品国产户外野外| 国产一区二区日韩精品欧美精品| 国产亚洲在线播放| 久久久伊人欧美| 亚洲一区二区国产| 精品久久香蕉国产线看观看gif| 曰本色欧美视频在线| 亚洲无线码在线一区观看| 久久久免费在线观看| 久久精品视频一| 亚洲精品不卡在线| 8050国产精品久久久久久| 国产剧情久久久久久| 日韩中文在线中文网三级| 国产成人精品久久亚洲高清不卡| 亚洲欧美日韩国产成人| 国产精品久久久久久久app| 91精品免费视频|