最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程

 更新時間:2021年04月16日 09:13:50   作者:大造夢家  
這篇文章主要介紹了詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

數(shù)據(jù)庫 在使用mybatis插入大量數(shù)據(jù)的時候,為了提高效率,放棄循環(huán)插入,改為批量插入,mapper如下:

package com.lcy.service.mapper;

import com.lcy.service.pojo.TestVO;
import org.apache.ibatis.annotations.Insert;

import java.util.List;

public interface TestMapper {

    @Insert("")
    Integer testBatchInsert(List list);
}

實體類:

package com.lcy.service.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestVO {

    private String t1;

    private String t2;

    private String t3;

    private String t4;

    private String t5;

}

測試類如下:

import com.lcy.service.TestApplication;
import com.lcy.service.mapper.TestMapper;
import com.lcy.service.pojo.TestVO;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.ArrayList;
import java.util.List;

@SpringBootTest(classes = TestApplication.class)
@RunWith(SpringRunner.class)
public class TestDemo {

    @Autowired
    private TestMapper testMapper;

    @Test
    public void insert() {
        List list = new ArrayList<>();
        for (int i = 0; i < 200000; i++) {
            list.add(new TestVO(i + "," + i, i + "," + i, i + "," + i, i + "," + i, i + "," + i));
        }
        System.out.println(testMapper.testBatchInsert(list));
    }

}

為了復現(xiàn)bug,我限制了JVM內存:

執(zhí)行測試類報錯如下:

java.lang.OutOfMemoryError: Java heap space

 at java.base/java.util.Arrays.copyOf(Arrays.java:3746)

可以看到,Arrays在申請內存的時候,導致棧內存溢出

改進方法,分批新增:

import com.lcy.service.TestApplication;
import com.lcy.service.mapper.TestMapper;
import com.lcy.service.pojo.TestVO;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@SpringBootTest(classes = TestApplication.class)
@RunWith(SpringRunner.class)
public class TestDemo {

    @Autowired
    private TestMapper testMapper;

    @Test
    public void insert() {
        List list = new ArrayList<>();
        for (int i = 0; i < 200000; i++) {
            list.add(new TestVO(i + "," + i, i + "," + i, i + "," + i, i + "," + i, i + "," + i));
        }
        int index = list.size() / 10000;
        for (int i=0;i< index;i++){
            //stream流表達式,skip表示跳過前i*10000條記錄,limit表示讀取當前流的前10000條記錄
            testMapper.testBatchInsert(list.stream().skip(i*10000).limit(10000).collect(Collectors.toList()));
        }
    }
}

還有一種方法是調高JVM內存,不過不建議使用,不僅吃內存,而且數(shù)據(jù)量過大會導致sql過長報錯

到此這篇關于詳解mybatis批量插入10萬條數(shù)據(jù)的優(yōu)化過程的文章就介紹到這了,更多相關mybatis批量插入10萬數(shù)據(jù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Springboot整合RabbitMQ消息中間件的使用

    Springboot整合RabbitMQ消息中間件的使用

    在沒有特別要求的情況下,通常會選擇RabbitMQ作為消息中間件,本文主要介紹了Springboot整合RabbitMQ消息中間件的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • spring整合struts2過程詳解

    spring整合struts2過程詳解

    這篇文章主要介紹了spring整合struts2過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • ThreadPoolExecutor線程池原理及其execute方法(詳解)

    ThreadPoolExecutor線程池原理及其execute方法(詳解)

    下面小編就為大家?guī)硪黄猅hreadPoolExecutor線程池原理及其execute方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 淺談maven的jar包和war包區(qū)別 以及打包方法

    淺談maven的jar包和war包區(qū)別 以及打包方法

    下面小編就為大家分享一篇淺談maven的jar包和war包區(qū)別 以及打包方法,具有很好的參考價值,希望對大家有所幫助
    2017-11-11
  • Java線程池必知必會知識點總結

    Java線程池必知必會知識點總結

    這篇文章主要給大家介紹了關于Java線程池必知必會知識點的相關資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-02-02
  • SpringBoot項目修改訪問端口和訪問路徑的方法

    SpringBoot項目修改訪問端口和訪問路徑的方法

    這篇文章主要介紹了SpringBoot項目修改訪問端口和訪問路徑的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • SpringBoot框架實現(xiàn)切換啟動開發(fā)環(huán)境和測試環(huán)境

    SpringBoot框架實現(xiàn)切換啟動開發(fā)環(huán)境和測試環(huán)境

    這篇文章主要介紹了SpringBoot框架實現(xiàn)切換啟動開發(fā)環(huán)境和測試環(huán)境,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java日常練習題,每天進步一點點(15)

    Java日常練習題,每天進步一點點(15)

    下面小編就為大家?guī)硪黄狫ava基礎的幾道練習題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • mybatis-plus數(shù)據(jù)權限實現(xiàn)代碼

    mybatis-plus數(shù)據(jù)權限實現(xiàn)代碼

    這篇文章主要介紹了mybatis-plus數(shù)據(jù)權限實現(xiàn),結合了mybatis-plus的插件方式,做出了自己的注解方式的數(shù)據(jù)權限,雖然可能存在一部分的局限性,但很好的解決了我們自己去解析SQL的功能,需要的朋友可以參考下
    2023-06-06
  • Mybatisplus更新某個字段為null問題

    Mybatisplus更新某個字段為null問題

    Mybatisplus更新某個字段為null時,可以使用@TableField(updateStrategy=FieldStrategy.IGNORED)注解,該注解提供了字段映射、忽略非表字段、自動填充策略、字段條件處理等功能
    2025-02-02

最新評論

鄂伦春自治旗| 车险| 台山市| 谷城县| 五台县| 彩票| 浙江省| 镇沅| 孝感市| 峨眉山市| 靖宇县| 襄城县| 合肥市| 汉源县| 宣武区| 二手房| 永清县| 青州市| 忻城县| 枣阳市| 昌乐县| 徐闻县| 新和县| 房产| 东阿县| 枝江市| 巫溪县| 乐至县| 普宁市| 芒康县| 兴宁市| 临潭县| 托克托县| 云和县| 河间市| 萝北县| 本溪| 新巴尔虎左旗| 内江市| 金溪县| 陵水|