国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)庫批量插入數(shù)據(jù)的三種方法

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)庫批量插入數(shù)據(jù)的三種方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、準備工作

測試環(huán)境:SpringBoot項目+MybatisPlus框架+MySQL數(shù)據(jù)庫+Lombok

二、導(dǎo)入依賴

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.5.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

三、yml配置文件

server:
  port: 8081

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/mysql?useSSL=false&characterEncoding=utf-8&useUnicode=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
	##rewriteBatchedStatements=true   開啟批處理模式

四、實體類(數(shù)據(jù)庫表要有對應(yīng)字段)

package com.cy.model;

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

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {

    private Integer id;

    private String username;

    private String password;

}

五、測試

  1. 方法一:for循環(huán)插入(單條)(總耗時:n分鐘,每次都要獲取連接Connection、釋放連接和關(guān)閉資源等操作,比較耗時,這里就沒測了)
	@RequestMapping("/test3")  //單個插入(慢)
    public String test3(){
        long startTime=System.currentTimeMillis();
        for(int i=0;i<100000;i++){
            userService.save(new User(i+1,"張三","123456"));
        }
        long endTime=System.currentTimeMillis();
        long result=endTime-startTime;
        return "總耗時:"+(result/1000);
    }
  1. 方法二:批量插入saveBatch(4~7秒,這里用到了MybatisPLus的saveBatch批量插入方法,實際也是for循環(huán)單條插入,只不過它是利用分片處理batchSize=1000和分批提交事務(wù),從而提高了性能,不用在Connection上消費性能了)(推薦)
	@RequestMapping("/test2")  //批量插入saveBatch(分片處理batchSize=1000,分批提交事務(wù)) (次快)
    public String test2(){
        List<User> userList=new ArrayList<>();
        long startTime=System.currentTimeMillis();

        for(int i=0;i<100000;i++){
            userList.add(new User(i+1,"張三","123456"));
        }
        userService.saveBatch(userList);
        long endTime=System.currentTimeMillis();
        long result=endTime-startTime;
        return "總耗時:"+(result/1000);
    }
  1. 方法三:循環(huán)插入+開啟批處理模式(4~7秒,開啟批處理模式,關(guān)閉自動提交事務(wù),共同用一個sqlsession,單個插入性能得到提升,由于用同一個sqlsession,極大的減少了對資源操作和對事務(wù)處理的時間,很好地提高了性能)(推薦)
	@Resource
    private SqlSessionFactory sqlSessionFactory;
	@RequestMapping("/test1")  //批量插入(最快)---循環(huán)插入+批處理模式 ( 開啟批處理模式  rewriteBatchedStatements=true )
    public String test1(){
        //開啟批處理模式,關(guān)閉自動提交事務(wù)
        SqlSession sqlSession= sqlSessionFactory.openSession(ExecutorType.BATCH,false);
        long startTime=System.currentTimeMillis();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        for(int i=0;i<100000;i++){
            userMapper.insert(new User(i+1,"張三","123456"));
        }
        sqlSession.commit();//一次性提交事務(wù)
        sqlSession.close();//關(guān)閉資源
        long endTime=System.currentTimeMillis();
        long result=endTime-startTime;
        return "總耗時:"+(result/1000);
    }

以上就是全部內(nèi)容,希望對大家有幫助!文章來源地址http://www.zghlxwxcb.cn/news/detail-627116.html

到了這里,關(guān)于數(shù)據(jù)庫批量插入數(shù)據(jù)的三種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【數(shù)據(jù)庫】Python腳本實現(xiàn)數(shù)據(jù)庫批量插入事務(wù)

    【數(shù)據(jù)庫】Python腳本實現(xiàn)數(shù)據(jù)庫批量插入事務(wù)

    在工作中可能會遇到需要批量插入的場景, 而批量插入的過程具有 耗時長 的特點, 再此過程很容易出現(xiàn)程序崩潰的情況.為了解決插入大量數(shù)據(jù)插入后崩潰導(dǎo)致 已插入數(shù)據(jù)無法清理 及 未插入數(shù)據(jù)無法篩出 的問題, 需要編寫一個腳本記錄已插入和未插入的數(shù)據(jù), 并可以根據(jù)記錄

    2024年02月08日
    瀏覽(19)
  • sql文件導(dǎo)入數(shù)據(jù)庫的三種方式

    sql文件導(dǎo)入數(shù)據(jù)庫的三種方式

    方式一:在數(shù)據(jù)庫的表中直接右鍵運行sql文件 ? ?方式二:終端窗口 cmd,管理員身份運行 C:WINDOWSsystem32mysql -uroot -p 輸入密碼 use 數(shù)據(jù)庫名; mysql use reggie; source sql文件路徑(不能含有中文) 方式三:在數(shù)據(jù)庫或終端輸入sql指令 新建查詢--輸入sql語句--運行

    2024年02月03日
    瀏覽(28)
  • PostgreSQL數(shù)據(jù)庫命令行執(zhí)行SQL腳本的三種方式

    PostgreSQL數(shù)據(jù)庫命令行執(zhí)行SQL腳本的三種方式

    生成環(huán)境中,出于安全性等原因,往往不提供數(shù)據(jù)庫連接工具,所以對數(shù)據(jù)庫的更新和升級就得通過命令行來實現(xiàn)。本文總結(jié)了三種命令行執(zhí)行sql腳本的方式。 命令格式: psql [option…] [dbname] [username] 常用參數(shù)介紹: -h:指定IP地址或主機名。 -p:指定端口,默認為5432。 -U:

    2024年02月11日
    瀏覽(26)
  • 還原Sql Server數(shù)據(jù)庫BAK備份文件的三種方式及常見錯誤

    還原Sql Server數(shù)據(jù)庫BAK備份文件的三種方式及常見錯誤

    這是演示的是Sql Server 2008R2版本,不同版本可能有細微差別 右鍵點擊數(shù)據(jù)庫→還原數(shù)據(jù)庫 ? ?在還原的源中選擇源設(shè)備→點擊選擇框 ?在指定備份中點擊添加→選擇具體文件→確定→確定 ?勾選用于還原的備份集→這時目標數(shù)據(jù)庫中會自動生成目標數(shù)據(jù)庫名,在此選擇即可→

    2023年04月08日
    瀏覽(94)
  • 數(shù)據(jù)庫中的字段名與實體類中的屬性名不能一一對應(yīng)時的三種處理方式

    數(shù)據(jù)庫中的字段名與實體類中的屬性名不能一一對應(yīng)時的三種處理方式

    當(dāng)查詢結(jié)果的列名和java對象的屬性名對應(yīng)不上時需要采用下列方式進行處理: ????????第一種方式:在查詢語句中使用\\\"as\\\" 給列起別名 ????????第二種方式:使用resultMap結(jié)果映射 ????????第三種方式:開啟駝峰命名自動映射(配置settings) 實體類Car: packa

    2024年02月09日
    瀏覽(20)
  • Linux批量快速修改文件名的三種方法

    Linux批量快速修改文件名的三種方法

    在Linux中, 批量重命名文件 是一項常見且有用的操作。以下是三種常用的批量重命名文件的方法,每種方法都附有示例。這些方法既可以適用于新手,也適用于更有經(jīng)驗的用戶。 話不多說,直接上干貨! rename 命令 rename命令是一種強大的批量重命名工具,它支持使用正則表

    2024年04月11日
    瀏覽(94)
  • java批量修改數(shù)據(jù)庫數(shù)據(jù)

    批量更新 mysql更新語句很簡單,更新一條數(shù)據(jù)的某個字段,一般這樣寫: 代碼如下: UPDATE mytable SET myfield = ‘value’ WHERE other_field = ‘other_value’; 如果更新同一字段為同一個值,mysql也很簡單,修改下where即可: 代碼如下: UPDATE mytable SET myfield = ‘value’ WHERE other_field in (‘oth

    2024年02月16日
    瀏覽(18)
  • Java怎么實現(xiàn)幾十萬條同時數(shù)據(jù)插入(三種基本方法測試)

    目錄 1,使用批量插入 ?2,使用多線程 3,使用存儲過程 在Java中實現(xiàn)插入幾十萬條數(shù)據(jù),有多種方法可以使用。以下是其中的幾種: 使用批量插入可以有效地提高插入速度。下面是一個示例代碼: 使用多線程可以將數(shù)據(jù)分為多個部分并行插入,提高效率。以下是一個示例代

    2024年02月14日
    瀏覽(18)
  • mysql插入重復(fù)數(shù)據(jù)的三種處理方式(DUPLICATE、IGNORE、REPLACE )

    “ INSERT ? ... ?ON ?DUPLICATE ? KEY ?UPDATE ? ”, 它是在插入操作時, 如果數(shù)據(jù)出現(xiàn)重復(fù),則更新重復(fù)數(shù)據(jù)的值 。 ? 示例: INSERT INTO myf_deal_data ( `ID`, `PTNAME`, `PTDATA`, `OPERTIME`, `REPORTTIME` ) VALUES ?? ?( 111, \\\'858_Ua\\\', \\\'219.1000\\\', \\\'2022-04-01 00:45:00\\\', \\\'2022-06-28 10:04:52\\\' )? ON DUPLICATE KEY UPDATE PT

    2024年02月10日
    瀏覽(48)
  • Mybatis-Plus批量添加或修改數(shù)據(jù)的三種方式

    Mybatis-Plus批量添加或修改數(shù)據(jù)的三種方式

    提供的方法 是遍歷每一個元素,判斷主鍵是否存在,如果存在則做更新,不存在添加 先獲取表中所有的主鍵 ,然后 判斷是否已存在,存在更新,不存在添加 on duplicate key update 是Mysql特有的語法,如下圖所示,表中id 為主鍵 再插入id為1的數(shù)據(jù),則提示主鍵已存在 改成如下

    2024年02月06日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包