成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:214日期: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 數據庫
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
99精品视频在线观看| 日韩av成人高清| 免费亚洲网站| 在线观看网站黄不卡| 91精品国产色综合久久不卡蜜臀| 亚洲国产高清aⅴ视频| 亚洲国产日韩精品| 久久成人久久爱| 91麻豆免费看片| 91久久精品国产91性色tv| 久久久影视传媒| 亚洲成av人综合在线观看| caoporen国产精品视频| 亚洲一区bb| 久久综合一区二区| 亚洲成a人v欧美综合天堂| 久久中文在线| 91成人免费在线| 婷婷综合久久一区二区三区| 91亚洲精品久久久蜜桃网站| 欧美成人三级在线| 亚洲一区二区成人在线观看| 精品一区免费av| 亚洲天堂偷拍| 欧美一区二区三区免费大片| 国产一区二区三区免费观看| 亚洲精品女人| 日韩午夜精品电影| 日韩电影网1区2区| 一本色道久久综合狠狠躁的推荐 | 日韩免费高清av| 国产精品色噜噜| 亚洲欧美日韩小说| 久久99最新地址| 欧美视频一区二区| 亚洲影院在线观看| 亚洲一区二区三区免费观看| 欧美精三区欧美精三区| 一区二区三区精品视频在线| 成人福利视频网站| 欧美女孩性生活视频| 亚洲综合av网| 一本色道久久加勒比精品| 久久精品国产精品青草| 欧美一区二区福利在线| av电影在线观看一区| 国产精品毛片高清在线完整版| 亚洲美女啪啪| 精品国精品国产尤物美女| 麻豆中文一区二区| 免费观看一级特黄欧美大片| 国产精品自拍毛片| 亚洲精品麻豆| 亚洲一区视频在线| 欧美性感一区二区三区| 国产99久久久久| 欧美视频完全免费看| 国产一区二区三区免费播放| 精品第一国产综合精品aⅴ| 欧美视频导航| 337p日本欧洲亚洲大胆精品 | 99亚洲一区二区| 亚洲国产一区二区在线播放| 欧美日韩国产中文| 女同性一区二区三区人了人一| 欧美一级日韩不卡播放免费| 午夜精品网站| 国产欧美一区二区精品仙草咪| 成人亚洲一区二区一| 欧美日韩国产电影| av在线不卡免费看| 亚洲精品免费视频| 亚洲第一伊人| 亚洲欧美在线观看| 国产在线精品二区| 中文字幕欧美日本乱码一线二线| 91久久亚洲| 久久精品久久久精品美女| 久久午夜电影网| 久久精品人人| 无码av免费一区二区三区试看 | 中文字幕va一区二区三区| 国产精品裸体一区二区三区| 日韩理论片一区二区| 国产综合自拍| 日韩中文字幕91| 色嗨嗨av一区二区三区| 高清成人在线观看| 亚洲综合免费观看高清完整版| 欧美视频完全免费看| 国产精品豆花视频| 国产真实精品久久二三区| 9191精品国产综合久久久久久| 精品一区二区av| 国产精品视频在线看| 欧美亚洲国产一区二区三区va | 欧美一卡2卡三卡4卡5免费| 亚洲国产国产亚洲一二三| 全部av―极品视觉盛宴亚洲| 久久亚洲综合色一区二区三区| 免费精品视频| 欧美国产免费| 国产乱人伦精品一区二区在线观看| 亚洲欧美区自拍先锋| 日韩一区二区在线观看| 国产日韩专区| 福利一区二区在线| 午夜精品久久久久久久久久久 | 青青草成人在线观看| 久久久久高清精品| 在线中文字幕一区| 亚洲国产午夜| av不卡免费电影| 捆绑调教美女网站视频一区| 中文字幕一区二区三区在线不卡| 欧美一级夜夜爽| 在线免费精品视频| 国产欧美日韩综合一区在线播放| 五月天欧美精品| 国产欧美精品一区二区色综合朱莉| 欧美性色aⅴ视频一区日韩精品| 亚洲人妖av一区二区| 精品国产电影一区二区| 精品视频在线免费观看| 成人精品亚洲人成在线| 天天综合色天天综合色h| 亚洲日本在线天堂| 欧美激情自拍偷拍| 337p日本欧洲亚洲大胆色噜噜| 欧美日韩另类国产亚洲欧美一级| 国产一区二区三区免费不卡 | 国产一区日韩欧美| 国产成人在线视频网址| 国产午夜精品一区二区三区嫩草| 红桃视频国产精品| 国产成人丝袜美腿| 美腿丝袜亚洲一区| 亚洲成人精品在线观看| 亚洲免费av高清| 欧美经典三级视频一区二区三区| 日韩一区二区三区精品视频| 色又黄又爽网站www久久| 日韩午夜av在线| 欧美日韩另类丝袜其他| 99久久精品免费看国产免费软件| 国产精品一区二区免费不卡| 另类专区欧美蜜桃臀第一页| 亚洲国产成人av网| 亚洲免费av在线| 国产精品久久午夜夜伦鲁鲁| 久久久久久久欧美精品| 伊人色综合久久天天五月婷| 欧美在线免费| 97成人超碰视| av一区二区久久| 成人一区二区在线观看| 国产剧情av麻豆香蕉精品| 免费看欧美女人艹b| 日日骚欧美日韩| 亚洲一区二区影院| 一区二区三区免费观看| 亚洲精品国产一区二区精华液 | 久久资源在线| 免费亚洲一区| 国产精品免费一区二区三区在线观看| 在线精品亚洲一区二区| 亚洲二区视频| 亚洲高清123| 亚洲精品在线二区| 99国产精品自拍| 宅男噜噜噜66国产日韩在线观看| 日韩天堂av| 国产精品日韩欧美一区二区三区| 国产视频久久| 久久久久久久高潮| 欧美专区在线观看一区| 欧美综合色免费| 欧美性xxxxxx少妇| 欧美日韩精品三区| 制服丝袜亚洲色图| 精品美女被调教视频大全网站| 久久久不卡网国产精品一区| 国产日韩欧美电影| 亚洲欧美中日韩| 亚洲国产视频一区二区| 日韩不卡一二三区| 九色综合国产一区二区三区| 国产一区二区三区黄视频| 国产suv精品一区二区三区| 国产成人av电影| 色综合天天综合色综合av| 五月婷婷综合激情| 五月婷婷久久综合| 青青草精品视频| 韩国三级中文字幕hd久久精品| 国产精品中文字幕欧美| 成人综合激情网| 欧美成人中文| 国产欧美日韩亚洲一区二区三区| 一本大道久久a久久精二百|