亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

spring中jdbcTemplate.batchUpdate的幾種使用情況

 更新時間:2022年04月08日 10:23:16   作者:扯吧  
本文主要介紹了spring中jdbcTemplate.batchUpdate的幾種使用情況,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在我做批量插入的過程中,由于數(shù)據(jù)庫做了唯一約束,所以有些重復數(shù)據(jù)會出錯,在我的設想中,除出錯的數(shù)據(jù),其它數(shù)據(jù)應該是都會插入的,但事實不是;

1,batchUpdate(String[] sqls)

這種的sql在于多樣化,可以是各種混合sql,在操作時,會一部分一部分的發(fā)送到數(shù)據(jù)庫去執(zhí)行,中途有某條sql報錯時,后面的sql則不會執(zhí)行,之前的sql則全部會執(zhí)行提交,可在數(shù)據(jù)庫看到變化;

暫時沒找到讓后面sql執(zhí)行的方法,搜了好久,都說不支持這種操作,都建議在sql之前做判錯處理或trycatch后,再將sql一條一條的執(zhí)行。

public void a (){
        try {
            String[] sql = new String[4];
            sql[0] = "insert into TEST(id) values (1)";
            sql[1] = "insert into TEST(id) values (2)";
            sql[2] = "insert into TEST(id) values (1)";
            sql[3] = "insert into TEST(id) values (3)";
            jdbcTemplate.batchUpdate(sql);
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
}

在ID為主鍵的情況下,這個只會插入1和2,提示批處理中出現(xiàn)錯誤: ORA-00001: 違反唯一約束條件。

2,batchUpdate(String sql,List <Object[]> parms)

這種的sql在于效率,固定的sql,變化的參數(shù),操作時間會極大減少,默認情況下,當中途有數(shù)據(jù)報錯時,會全部回滾,不提交,所以是全部插入或者全部不插入;

public void b (){
        try {
            String sql = "insert into TEST(id) values (?)";
            List<Object[]> list = new ArrayList<>();
            for (int i = 0; i < 4; i++) {
                String[] sqls = new String[1];
                sqls[0] = i +"";
                if(i == 2){ // 增加一條異常數(shù)據(jù)
                    sqls[0] = i-1 +"";
                }
                list.add(sqls);
            }
            jdbcTemplate.batchUpdate(sql,list);
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
    }

這個全部都不會插入,提示批處理中出現(xiàn)錯誤: ORA-00001: 違反唯一約束條件。

3,適用于我的解決方案

對sql處理處理了一下,對要插入的數(shù)據(jù)做了是否存在判斷,如果不存在,則插入;用not EXISTS 判斷要插入的數(shù)據(jù)或有主鍵約束或有唯一約束的數(shù)據(jù)是否存在;

public void b (){
        try {
            String[] sql = new String[2];
            sql[0] = "insert into TEST(id) values (1)";
            sql[1] = "insert into TEST(id) " +
                           "select '1' from dual where not EXISTS(SELECT id FROM TEST WHERE id = '1')";
            sql[2] = "insert into TEST(id) values (2)";
            jdbcTemplate.batchUpdate(sql);
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
    }

會插入1和2。

到此這篇關于spring中jdbcTemplate.batchUpdate的幾種使用情況的文章就介紹到這了,更多相關spring jdbcTemplate.batchUpdate內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring Boot使用profile如何配置不同環(huán)境的配置文件

    Spring Boot使用profile如何配置不同環(huán)境的配置文件

    ,springboot支持通過不同的profile來配置不同環(huán)境的配置,下面就大致介紹一下yml配置文件跟properties配置文件怎么使用profile配置不同環(huán)境的配置文件
    2018-01-01
  • Springboot?返回文件給前端的示例代碼

    Springboot?返回文件給前端的示例代碼

    這篇文章主要介紹了Springboot?返回文件給前端的示例代碼,本文結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Java?NIO緩沖區(qū)Buffer基礎教程示例

    Java?NIO緩沖區(qū)Buffer基礎教程示例

    這篇文章主要介紹了Java?NIO緩沖區(qū)Buffer基礎教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • java 內部類的詳解及實例

    java 內部類的詳解及實例

    這篇文章主要介紹了 java 內部類的詳解及實例的相關資料,這里提供了兩種內部類的實現(xiàn)方法,并給出實例,需要的朋友可以參考下
    2017-08-08
  • Spring IOC與DI核心深入理解

    Spring IOC與DI核心深入理解

    IOC也是Spring的核心之一了,之前學的時候是采用xml配置文件的方式去實現(xiàn)的,后來其中也多少穿插了幾個注解,但是沒有說完全采用注解實現(xiàn)。那么這篇文章就和大家分享一下,全部采用注解來實現(xiàn)IOC+DI
    2023-02-02
  • 詳解Java Selenium中的鍵盤控制操作

    詳解Java Selenium中的鍵盤控制操作

    這篇文章主要為大家介紹了如何使用java代碼利用Selenium 控制瀏覽器中需要用到的鍵盤操作。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-01-01
  • Java中的Lock與ReentrantLock深入解析

    Java中的Lock與ReentrantLock深入解析

    這篇文章主要介紹了Java中的Lock與ReentrantLock深入解析,Lock位于java.util.concurrent.locks包下,是一種線程同步機制,就像synchronized塊一樣,但是,Lock比synchronized塊更靈活、更復雜,需要的朋友可以參考下
    2024-01-01
  • Java RateLimiter的限流詳解

    Java RateLimiter的限流詳解

    這篇文章主要為大家詳細介紹了Java RateLimiter的限流,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Spring Boot2.X國際化文件編寫配置

    Spring Boot2.X國際化文件編寫配置

    這篇文章主要介紹了Spring Boot2.X國際化文件編寫配置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • RabbitMQ 實現(xiàn)延遲隊列的兩種方式詳解

    RabbitMQ 實現(xiàn)延遲隊列的兩種方式詳解

    很多場景下我們都需要延遲隊列。這篇文章主要以RabbitMQ為例來和大家聊一聊延遲隊列的玩法。文中的代碼具有一定的學習價值,感興趣的同學可以了解一下
    2021-12-12

最新評論