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

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

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

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

1,batchUpdate(String[] sqls)

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

暫時沒找到讓后面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,提示批處理中出現錯誤: ORA-00001: 違反唯一約束條件。

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

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

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){ // 增加一條異常數據
                    sqls[0] = i-1 +"";
                }
                list.add(sqls);
            }
            jdbcTemplate.batchUpdate(sql,list);
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
    }

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

3,適用于我的解決方案

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

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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中BigDecimal類的add()的使用詳解

    Java中BigDecimal類的add()的使用詳解

    這篇文章主要介紹了Java中BigDecimal類的add()的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 詳解Spring中的Environment外部化配置管理

    詳解Spring中的Environment外部化配置管理

    本文主要介紹了Spring中的Environment外部化配置管理,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java中的NumberFormatException異常原因以及解決方案詳解

    Java中的NumberFormatException異常原因以及解決方案詳解

    這篇文章主要介紹了Java中的NumberFormatException異常原因以及解決方案詳解,NumberFormatException 是 Java 中的一個異常類,通常在字符串轉換為數字的過程中發(fā)生,它表示一個無效的數字格式,即字符串無法被正確解析為數字,需要的朋友可以參考下
    2024-02-02
  • RocketMQ NameServer保障數據一致性實現方法講解

    RocketMQ NameServer保障數據一致性實現方法講解

    這篇文章主要介紹了RocketMQ NameServer保障數據一致性實現方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • springboot創(chuàng)建監(jiān)聽和處理事件的操作方法

    springboot創(chuàng)建監(jiān)聽和處理事件的操作方法

    這篇文章主要介紹了springboot創(chuàng)建監(jiān)聽和處理事件的操作方法,使用Spring Boot的事件機制來監(jiān)聽和處理事件有多種優(yōu)勢,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2024-07-07
  • SpringBoot Session共享實現圖解

    SpringBoot Session共享實現圖解

    這篇文章主要介紹了SpringBoot Session共享實現圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • 詳解Java分布式系統(tǒng)中一致性哈希算法

    詳解Java分布式系統(tǒng)中一致性哈希算法

    這篇文章主要介紹了Java分布式系統(tǒng)中一致性哈希算法,對算法感興趣的同學,可以參考下
    2021-04-04
  • 詳解SpringMVC中的@RequestMapping注解

    詳解SpringMVC中的@RequestMapping注解

    這篇文章主要介紹了SpringMVC中@RequestMapping注解,@RequestMapping注解是一個用來處理請求地址映射的注解,可用于映射一個請求或一個方法,可以用在類或方法上,需要的朋友可以參考下
    2023-07-07
  • Java反射機制,反射相關API,反射API使用方式(反射獲取實體類字段名和注解值)

    Java反射機制,反射相關API,反射API使用方式(反射獲取實體類字段名和注解值)

    這篇文章主要介紹了Java反射機制,反射相關API,反射API使用方式(反射獲取實體類字段名和注解值),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Spring?Boot?打包如何將依賴全部打進去

    Spring?Boot?打包如何將依賴全部打進去

    這篇文章主要介紹了Spring?Boot?打包如何將依賴全部打進去,在pom.xml中引入插件,需要在項目的pom.xml文件中,添加?Maven?插件??spring-boot-maven-plugin,本文結合實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-09-09

最新評論

务川| 龙门县| 彰化市| 白朗县| 南安市| 江达县| 昆明市| 抚松县| 建湖县| 庆云县| 岳池县| 长乐市| 深泽县| 威信县| 惠水县| 陆河县| 张家口市| 西藏| 阳江市| 土默特左旗| 汽车| 梅州市| 澳门| 神农架林区| 宁远县| 昌平区| 论坛| 长岛县| 普兰店市| 永寿县| 莱州市| 沙湾县| 肇源县| 德江县| 嫩江县| 郸城县| 尚义县| 辽宁省| 新田县| 贵州省| 太谷县|