日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Mybatis三種批量插入數據的方式

瀏覽:265日期:2023-10-19 13:17:07
1. 循環插入

mapper.xml:

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'><mapper namespace='com.buhe.demo.mapper.StudentMapper'> <insert parameterType='Student'> INSERT INTO tb_student (name, age, phone, address, class_id) VALUES (#{name},#{age},#{phone},#{address},#{classId}) </insert></mapper>

mapper接口:

public interface StudentMapper { int insert(Student student);}

測試代碼:

@SpringBootTestclass DemoApplicationTests {@Resourceprivate StudentMapper studentMapper;@Testpublic void testInsert(){//數據生成List<Student> studentList = createData(100);//循環插入long start = System.currentTimeMillis();studentList.stream().forEach(student -> studentMapper.insert(student));System.out.println(System.currentTimeMillis() - start);}private List<Student> createData(int size){List<Student> studentList = new ArrayList<>();Student student;for(int i = 0; i < size; i++){student = new Student();student.setName('小王' + i);student.setAge(18);student.setClassId(1);student.setPhone('1585xxxx669');student.setAddress('未知');studentList.add(student);}return studentList;}}2. foreach標簽

mapper.xml:

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'><mapper namespace='com.buhe.demo.mapper.StudentMapper'> <insert parameterType='Student'> INSERT INTO tb_student (name, age, phone, address, class_id) VALUES (#{name},#{age},#{phone},#{address},#{classId}) </insert> <insert id='insertBatch'> INSERT INTO tb_student (name, age, phone, address, class_id) VALUES <foreach collection='list' separator=',' item='item'>(#{item.name},#{item.age},#{item.phone},#{item.address},#{item.classId}) </foreach> </insert></mapper>

mapper接口:

public interface StudentMapper { int insert(Student student); int insertBatch(List<Student> studentList);}

測試代碼:

@SpringBootTestclass DemoApplicationTests {@Resourceprivate StudentMapper studentMapper;@Testpublic void testInsertByForeachTag(){//數據生成List<Student> studentList = createData(100);//使用foreach標簽,拼接SQL插入long start = System.currentTimeMillis();studentMapper.insertBatch(studentList);System.out.println(System.currentTimeMillis() - start);}private List<Student> createData(int size){List<Student> studentList = new ArrayList<>();Student student;for(int i = 0; i < size; i++){student = new Student();student.setName('小王' + i);student.setAge(18);student.setClassId(1);student.setPhone('1585xxxx669');student.setAddress('未知');studentList.add(student);}return studentList;}}3. 批處理

測試代碼:

@SpringBootTestclass DemoApplicationTests {@Autowiredprivate SqlSessionFactory sqlSessionFactory;@Testpublic void testInsertBatch(){//數據生成List<Student> studentList = createData(100);//使用批處理long start = System.currentTimeMillis();SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false);StudentMapper studentMapperNew = sqlSession.getMapper(StudentMapper.class);studentList.stream().forEach(student -> studentMapperNew.insert(student));sqlSession.commit();sqlSession.clearCache();System.out.println(System.currentTimeMillis() - start);}private List<Student> createData(int size){List<Student> studentList = new ArrayList<>();Student student;for(int i = 0; i < size; i++){student = new Student();student.setName('小王' + i);student.setAge(18);student.setClassId(1);student.setPhone('1585xxxx669');student.setAddress('未知');studentList.add(student);}return studentList;}}三種方式的對比

MySQL服務器版本:5.6.4

其他依賴版本如下:

<?xml version='1.0' encoding='UTF-8'?><project xmlns='http://maven.apache.org/POM/4.0.0' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'xsi:schemaLocation='http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd'><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.buhe</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.41</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources></build></project>

三種插入方式在不同數據量下的表現,測試結果:

插入方式 10條 100條 500條 1000條 循環插入 496ms 3330ms 15584ms 33755ms foreach標簽 268ms 366ms 392ms 684ms 批處理 222ms 244ms 364ms 426ms

三種方式中,批處理的方式效率是最高的,尤其是在數據量大的情況下尤為明顯。

其次是foreach標簽,foreach標簽是通過拼接SQL語句的方式完成批量操作的。但是當拼接的SQL過多,導致SQL大小超過了MySQL服務器中max_allowed_packet變量的值時,會導致操作失敗,拋出PacketTooBigException異常。

最后是循環插入的方式,這種方式在數據量小的時候可以使用,在數據量大的情況下效率要低很多。

以上就是Mybatis的三種批量插入方式的詳細內容,更多關于Mybatis 批量插入的資料請關注好吧啦網其它相關文章!

標簽: Mybatis 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美中文一区二区| 欧美啪啪一区| 国产欧美一区二区三区精品观看| 青青久久av| 日本蜜桃在线观看视频| 美女av一区| 成人美女视频| 特黄毛片在线观看| 国产精品yjizz视频网| 国产毛片精品| 免费的成人av| 亚洲黄色影院| 97精品一区| 中文字幕一区久| 国产高潮在线| 久久久久久久久久久妇女 | 欧美综合另类| 日韩精品久久久久久久电影99爱 | 日韩欧美高清一区二区三区| 亚洲欧洲日韩| 国产欧美亚洲一区| 蜜臀av免费一区二区三区| 美女视频网站久久| 精品国产中文字幕第一页| 久久精品亚洲一区二区| 麻豆一区二区三区| 国产福利亚洲| 国产精品videossex久久发布| 国产精品色在线网站| 久久香蕉精品香蕉| 日韩电影在线视频| 日韩午夜在线| 亚洲一区二区三区无吗| 日本vs亚洲vs韩国一区三区二区| 欧美日韩va| 久久精品国内一区二区三区水蜜桃| 久久超级碰碰| 亚洲黄色免费av| 欧美中文字幕一区二区| 午夜在线精品偷拍| 久久激情五月婷婷| 精品国产乱码久久久久久樱花| 亚洲天堂一区二区| 首页国产欧美久久| 欧美片第1页综合| 欧美xxxx中国| 欧美粗暴jizz性欧美20| 亚洲综合三区| 欧美日韩亚洲一区二区三区在线| 精品精品久久| 激情五月色综合国产精品| 欧美一区二区性| 色综合视频一区二区三区日韩 | 国产精品99在线观看| 亚洲婷婷在线| 欧美欧美黄在线二区| 黄色aa久久| 天堂成人免费av电影一区 | 在线一区欧美| 国产精品对白久久久久粗| 欧美黄页在线免费观看| 日韩欧美一区二区三区免费看| 黄色亚洲精品| 国产精品qvod| 亚洲天堂久久| 国产精品蜜月aⅴ在线| 伊伊综合在线| 蜜臀va亚洲va欧美va天堂| 久久99久久人婷婷精品综合| 91精品国产乱码久久久久久久 | 精品一区二区三区亚洲| 日韩亚洲精品在线| 国产精品毛片久久久| 日韩一区二区三区在线免费观看| 在线精品福利| 少妇精品导航| 日韩精品欧美成人高清一区二区| av综合电影网站| 日韩av电影一区| 欧美+亚洲+精品+三区| 麻豆国产精品777777在线| 日韩一区二区免费看| 久久成人福利| 天堂va在线高清一区| 久久久久久久久丰满| 久久一区视频| 日本va欧美va精品发布| 中文一区二区| 成人精品亚洲| 精品视频99| 日本中文字幕一区二区| 精品亚洲免a| 日韩欧美三区| 亚洲欧洲一区| 久久激情婷婷| 美女精品视频在线| 7777精品| 免费成人在线观看| re久久精品视频| 国产高潮在线| 国产欧美日韩影院| 蜜臀精品一区二区三区在线观看 | 国产精品一页| 日韩在线观看中文字幕| 亚洲涩涩在线| 国产精品**亚洲精品| 欧美日韩视频免费看| 最近国产精品视频| 亚洲国产不卡| japanese国产精品| 99精品视频在线| 日韩中文首页| 蜜桃av.网站在线观看| 高潮久久久久久久久久久久久久| 国产精品极品在线观看| 国产乱码精品| 国产乱子精品一区二区在线观看 | 日本不卡中文字幕| 亚洲午夜av| 久久一级电影| 久久一区二区三区电影| 久久精品观看| 五月天久久网站| 欧美1级日本1级| 欧美日韩国产一区二区三区不卡| 日韩在线短视频| 日韩欧美在线中字| 99tv成人| 美女尤物久久精品| 午夜在线视频一区二区区别| 久久久久亚洲| 午夜欧美在线| 黄色日韩在线| 在线日韩成人| 欧美aa国产视频| 丝袜脚交一区二区| 欧美aa在线视频| 1024精品一区二区三区| 四虎国产精品免费久久| 国产一区二区久久久久| 日韩视频二区| 欧美1区二区| 国产亚洲精品久久久久婷婷瑜伽| 奇米狠狠一区二区三区| 福利一区二区三区视频在线观看| 亚洲自拍另类| 麻豆视频观看网址久久| 日韩中文欧美在线| 国产精品麻豆久久| 日本成人精品| 久久国产亚洲| 国产视频一区二区在线播放| 久久视频精品| 精品国产中文字幕第一页| 日韩中文字幕不卡| 日韩精品dvd| 日本a口亚洲| 影音国产精品| 成人在线免费观看网站| 99国产精品久久久久久久| 国产麻豆一区二区三区精品视频| 欧美日韩精品一区二区视频| 国产精品免费大片| 久久福利毛片| 精品亚洲美女网站| 欧美黄色一区| 在线日韩成人| 免费av一区二区三区四区| 国语对白精品一区二区| 日韩成人午夜精品| 国产视频亚洲| 国产超碰精品| 精品三区视频| 日韩动漫一区| 欧美日韩日本国产亚洲在线| 日本精品黄色| 国产精品亚洲片在线播放| 日韩中文字幕一区二区三区| 久久久久国产精品一区三寸| 国产精品天天看天天狠| 亚洲天堂日韩在线| 国产亚洲午夜| 亚洲香蕉网站| 欧美一级鲁丝片| 高潮久久久久久久久久久久久久| 国产免费播放一区二区| 日本视频在线一区| 爽好多水快深点欧美视频| 国产99精品一区| 蜜桃av.网站在线观看| 精品欧美日韩精品| 国产免费播放一区二区| 日韩av网站在线观看| 日本亚洲三级在线| 综合国产在线| 免费日韩av片| 日韩中文字幕亚洲一区二区va在线| 日韩视频不卡| 久久成人精品| 水野朝阳av一区二区三区|