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

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

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

瀏覽:261日期: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久久,三上悠亚国产精品一区二区三区
91精品观看| 四虎8848精品成人免费网站| 激情黄产视频在线免费观看| 免费视频一区二区三区在线观看 | 夜久久久久久| 亚洲伊人精品酒店| 日本aⅴ免费视频一区二区三区| 欧美日韩亚洲国产精品| 青青在线精品| 国产一区二区亚洲| 精品一区亚洲| 亚洲久久一区| 国产乱码精品一区二区三区亚洲人| 老色鬼精品视频在线观看播放| 成人午夜毛片| 亚洲经典在线| 欧美私人啪啪vps| 亚洲国产欧美日本视频| 韩日一区二区三区| 亚洲v天堂v手机在线| 麻豆精品久久久| 极品裸体白嫩激情啪啪国产精品| 亚洲一区av| 人人爱人人干婷婷丁香亚洲| 成人午夜网址| 亚洲欧美日韩在线观看a三区| 亚洲精品精选| 欧美国产专区| 99riav国产精品| 国产精品xxx在线观看| 99热精品久久| 久久国产欧美日韩精品| 一区二区小说| 国产欧美高清视频在线| 日韩国产欧美| 亚洲欧洲免费| 欧美日韩视频免费观看| 日本欧美韩国一区三区| 97精品一区二区| 中文字幕日韩亚洲| av资源亚洲| 日本免费一区二区视频| 91精品国产自产在线观看永久∴ | 免费在线欧美黄色| 午夜在线观看免费一区| 精品日韩一区| 亚洲影视一区二区三区| 国产精品99一区二区三区| 在线看片日韩| 久久精品不卡| 国产精品一在线观看| 欧美丝袜一区| 精品一区二区三区的国产在线观看| 亚洲一区欧美激情| 久久夜夜操妹子| 国产日韩亚洲| 亚洲综合电影一区二区三区| 成人亚洲一区| 国产欧美88| 视频在线观看国产精品| 在线看片国产福利你懂的| 日本欧美久久久久免费播放网| 激情欧美国产欧美| 国产91在线播放精品| 欧美一区免费| 老司机久久99久久精品播放免费| av高清不卡| 麻豆精品99| 国产探花一区在线观看| 久久xxxx| 亚洲精品一区二区妖精| 精品捆绑调教一区二区三区| 久久久精品国产**网站| 欧美一区二区三区免费看| 中文字幕日韩亚洲| 午夜一级在线看亚洲| 极品裸体白嫩激情啪啪国产精品| 色综合狠狠操| 国精品产品一区| 国产伦理久久久久久妇女| 久久国产精品久久w女人spa| 99久久www免费| 99成人在线视频| 日韩精品中文字幕第1页| 美女久久久精品| 国产精品欧美三级在线观看| 亚洲乱码视频| 亚洲精品伊人| 亚州欧美在线| 日本高清久久| 日韩福利视频网| 日韩一区二区三区四区五区| 香蕉久久国产| 首页国产欧美久久| 亚洲欧美视频| 国产尤物精品| 欧美日韩国产一区精品一区| 夜夜精品视频| 亚洲一区欧美激情| 久久福利毛片| 日韩精品五月天| 国产免费久久| 国产极品嫩模在线观看91精品| 国产视频一区二区在线播放| 国产欧美午夜| 精品视频一二| 91av亚洲| 亚洲成人三区| 日韩在线a电影| 日韩中文av| 日韩黄色在线观看| 久久激情五月婷婷| 精品视频97| 日本不卡免费高清视频在线| 中文另类视频| 亚洲激情中文| 中文一区一区三区免费在线观| 亚洲另类av| 日韩动漫一区| 久久男人av| 久久人人97超碰国产公开结果| 91成人精品视频| 亚洲精品成人一区| 国产伦乱精品| 日韩欧美综合| 丝袜美腿亚洲一区| 亚洲一级大片| 久久影院资源站| 亚洲二区免费| 日韩在线视频一区二区三区| 免费看一区二区三区| 日韩精品1区| 免费久久99精品国产| 久久av网站| 亚洲欧美日韩高清在线| 久久国产精品色av免费看| 日韩激情一区| 亚洲资源网站| 日韩精品91| 亚洲毛片在线免费| 国产黄大片在线观看| 亚洲精品88| 中文字幕日本一区| 久久亚洲道色| 亚洲激情欧美| 国产剧情在线观看一区| 97精品97| 色8久久久久| 成人精品亚洲| 欧美日韩一区二区三区不卡视频| 国产不卡人人| 亚洲精品亚洲人成在线观看| 国产一区二区精品久| 99国产精品久久久久久久 | 蜜臀国产一区二区三区在线播放| 国产精品视频一区二区三区 | 日韩精品一级中文字幕精品视频免费观看 | 久久中文视频| 国产香蕉精品| 国产字幕视频一区二区| 欧美日韩黄网站| 日韩欧美精品| 国产日韩一区二区三区在线| 久久久水蜜桃av免费网站| 色婷婷成人网| 欧美日韩在线二区| 国产亚洲精品美女久久| 欧美 日韩 国产一区二区在线视频| 国产精品久久乐| 亚洲精品激情| 亚洲精品小说| 毛片在线网站| 国产精品大片免费观看| 免费在线观看一区二区三区| 日韩在线视频精品| 精品国产欧美日韩| 亚洲影视一区| 国产一区白浆| 欧美日韩国产高清电影| 日韩在线二区| 国产一区丝袜| 免费观看亚洲天堂| 婷婷综合福利| 亚洲日韩视频| 久久国产精品久久w女人spa| 亚洲国产综合在线看不卡| 精品高清久久| 国产精品免费大片| 欧美日韩午夜| 日韩高清一区在线| 亚洲精品中文字幕99999| 国产一区观看| 激情欧美一区二区三区| 欧美日韩免费看片| 亚洲深夜视频| 欧美香蕉视频| 九九色在线视频| 久久精品观看| 欧美日韩一二| av一区二区高清|