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

Spring 中jdbcTemplate 實(shí)現(xiàn)執(zhí)行多條sql語(yǔ)句示例

 更新時(shí)間:2017年01月14日 14:58:47   作者:菜鳥(niǎo)寶寶  
本篇文章主要介紹了Spring 中jdbcTemplate 實(shí)現(xiàn)執(zhí)行多條sql語(yǔ)句示例,可以對(duì)多個(gè)表執(zhí)行多個(gè)sql語(yǔ)句,有興趣的可以了解一下。

說(shuō)一下Spring框架中使用jdbcTemplate實(shí)現(xiàn)多條sql語(yǔ)句的執(zhí)行:

很多情況下我們需要處理一件事情的時(shí)候需要對(duì)多個(gè)表執(zhí)行多個(gè)sql語(yǔ)句,比如淘寶下單時(shí),我們確認(rèn)付款時(shí)要對(duì)自己銀行賬戶的表里減去訂單所需的錢(qián)數(shù),即需要更新銀行賬戶的表,同時(shí)需要更新淘寶訂單的表將訂單狀態(tài)改為“已付款”,這就需要先后執(zhí)行多個(gè)sql(僅僅用于表達(dá)執(zhí)行多的SQL的舉例說(shuō)明,具體淘寶如何實(shí)現(xiàn)并不是很清楚~~~~~); 但如果這中間出現(xiàn)電腦斷網(wǎng)斷電等問(wèn)題,僅將我們銀行賬戶的錢(qián)扣掉了,訂單狀態(tài)并沒(méi)有改,那我們是不是很慘,但實(shí)際上我們并沒(méi)有遇到這種情況對(duì)吧,下面我就來(lái)講一下如何使用Spring 中jdbcTemplate 實(shí)現(xiàn)執(zhí)行多條sql語(yǔ)句,而不出現(xiàn)這種情況

@Test  
public void 權(quán)限分配(){
    //1.客戶端復(fù)選框傳遞過(guò)來(lái)一個(gè)數(shù)組1,2 菜單的ID
    Integer[] menus =new Integer[]{1,2};
    //2.聲明sql數(shù)組
    String [] sql =new String [menus.length+1];
    //3.通過(guò)Role_id 200 刪除表中數(shù)據(jù)
    sql[0] = "delete from role_link_menu where fk_role_id=200";
    //4新數(shù)據(jù)添加到中間表
    for (int i=0;i<menus.length;i++) {
      sql[i+1]="insert into role_link_menu(id,fk_role_id,fk_menu_id) values ('"+UUID.randomUUID().toString()+"',200,             "+menus[i]+")";
    }
    jdbcTemplate.batchUpdate(sql);
  }

前提我們已經(jīng)連接好數(shù)據(jù)庫(kù)

這樣我們一共執(zhí)行了3條SQL語(yǔ)句

1.delete from role_link_menu where fk_role_id=200

2.insert into role_link_menu(id,fk_role_id,fk_menu_id) values ('"+UUID.randomUUID().toString()+"',200,1")";

3.insert into role_link_menu(id,fk_role_id,fk_menu_id) values ('"+UUID.randomUUID().toString()+"',200,2")";

這期間任一條SQL語(yǔ)句出現(xiàn)問(wèn)題都會(huì)回滾[**]會(huì)所有語(yǔ)句沒(méi)有執(zhí)行前的最初狀態(tài)^_^

對(duì)比下面一組代碼,我們就可以發(fā)現(xiàn)其中不同

@Test
  public void 權(quán)限分配單個(gè)處理() throws Exception{
    //1.通過(guò)Role_id 200 刪除表中數(shù)據(jù)
    String sql = "delect from role_link_menu where fk_role_id=200";
    jdbcTemplate.update(sql);
    //2.客戶端復(fù)選框傳遞過(guò)來(lái)一個(gè)數(shù)組1,2 菜單的id
    Integer[] menus =new Integer[]{1,2};
    //3.新數(shù)據(jù)添加到中間表
    for (int i=0;i<menus.length;i++) {
      String menu_sql="insert into role_link_menu(id,fk_role_id,fk_menu_id) values ('"+UUID.randomUUID().toString()+           "',200,"+menus[i]+")";
      if(i==1){
        throw new Exception("=====");
      }
      jdbcTemplate.update(menu_sql);
    }
  }

這里當(dāng)i=1會(huì)出現(xiàn)異常程序終止,共執(zhí)行了2條語(yǔ)句

1.delect from role_link_menu where fk_role_id=200

2.insert into role_link_menu(id,fk_role_id,fk_menu_id) values ('"+UUID.randomUUID().toString()+ "',200,1)";

下面一句不會(huì)執(zhí)行,但之前這兩條執(zhí)行完畢,就相當(dāng)于本來(lái)我們要買(mǎi)啤酒喝炸雞,賬戶錢(qián)扣了,結(jié)果就只給了你一罐啤酒,是不是郁悶?zāi)?,啊哈,反正我不?huì)開(kāi)心

滴~~~ 

**注:

回滾:事務(wù)是一組組合成邏輯工作單元的操作,雖然系統(tǒng)中可能會(huì)出錯(cuò),但事務(wù)將控制和維護(hù)事務(wù)中每個(gè)操作的一致性和完整性。

例如,在將資金從一個(gè)帳戶轉(zhuǎn)移到另一個(gè)帳戶的銀行應(yīng)用中,一個(gè)帳戶將一定的金額貸記到一個(gè)數(shù)據(jù)庫(kù)表中,同時(shí)另一個(gè)帳戶將相同的金額借記到另一個(gè)數(shù)據(jù)庫(kù)表中。由于計(jì)算機(jī)可能會(huì)因停電、網(wǎng)絡(luò)中斷等而出現(xiàn)故障,因此有可能更新了一個(gè)表中的行,但沒(méi)有更新另一個(gè)表中的行。

如果數(shù)據(jù)庫(kù)支持事務(wù),則可以將數(shù)據(jù)庫(kù)操作組成一個(gè)事務(wù),以防止因這些事件而使數(shù)據(jù)庫(kù)出現(xiàn)不一致。如果事務(wù)中的某個(gè)點(diǎn)發(fā)生故障,則所有更新都可以回滾到事務(wù)開(kāi)始之前的狀態(tài)。如果沒(méi)有發(fā)生故障,則通過(guò)以完成狀態(tài)提交事務(wù)來(lái)完成更新。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中的字節(jié),字符輸出流與字節(jié)和字符輸入流的簡(jiǎn)單理解

    Java中的字節(jié),字符輸出流與字節(jié)和字符輸入流的簡(jiǎn)單理解

    這篇文章主要介紹了java 字節(jié)流和字符流的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Java中父類(lèi)強(qiáng)制轉(zhuǎn)換子類(lèi)問(wèn)題解決

    Java中父類(lèi)強(qiáng)制轉(zhuǎn)換子類(lèi)問(wèn)題解決

    在Java編程中繼承是基礎(chǔ),但父類(lèi)轉(zhuǎn)換為子類(lèi)時(shí)需謹(jǐn)慎,正確的轉(zhuǎn)換要求父類(lèi)引用實(shí)際指向子類(lèi)對(duì)象,錯(cuò)誤轉(zhuǎn)換可能引發(fā)ClassCastException,解決方案包括使用instanceof關(guān)鍵字檢查、利用泛型避免轉(zhuǎn)換、以及通過(guò)多態(tài)性避免直接轉(zhuǎn)換,感興趣的可以了解一下
    2024-11-11
  • Spring如何處理注解的深入理解

    Spring如何處理注解的深入理解

    這篇文章主要給大家介紹了關(guān)于Spring如何處理注解的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java中的注解具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Java 本地方法Native Method詳細(xì)介紹

    Java 本地方法Native Method詳細(xì)介紹

    這篇文章主要介紹了 Java 本地方法Native Method詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 如何構(gòu)建可重復(fù)讀取inputStream的request

    如何構(gòu)建可重復(fù)讀取inputStream的request

    這篇文章主要介紹了如何構(gòu)建可重復(fù)讀取inputStream的request,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot JWT實(shí)現(xiàn)token登錄刷新功能

    SpringBoot JWT實(shí)現(xiàn)token登錄刷新功能

    JWT本身是無(wú)狀態(tài)的,這點(diǎn)有別于傳統(tǒng)的session,不在服務(wù)端存儲(chǔ)憑證。這種特性使其在分布式場(chǎng)景,更便于擴(kuò)展使用。接下來(lái)通過(guò)本文給大家分享SpringBoot JWT實(shí)現(xiàn)token登錄刷新功能,感興趣的朋友一起看看吧
    2021-09-09
  • SpringBoot?2.7.18?集成?Mybatis?Plus?+?Druid的實(shí)例詳解

    SpringBoot?2.7.18?集成?Mybatis?Plus?+?Druid的實(shí)例詳解

    Mybatis和MybatisPlus都是流行的持久層框架,MybatisPlus在Mybatis基礎(chǔ)上增加了更多便捷的功能,如自動(dòng)CRUD、分頁(yè)插件等,文章還提到了Entity、Mapper、Service、Controller等組件的基本使用方法,為開(kāi)發(fā)者提供了一套完整的集成方案
    2024-10-10
  • Springmvc異常映射2種實(shí)現(xiàn)方法

    Springmvc異常映射2種實(shí)現(xiàn)方法

    這篇文章主要介紹了Springmvc異常映射2種實(shí)現(xiàn)方法以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。,需要的朋友可以參考下
    2020-05-05
  • Java計(jì)算兩個(gè)字符相似度的幾種常用方法

    Java計(jì)算兩個(gè)字符相似度的幾種常用方法

    這篇文章主要給大家介紹了關(guān)于Java計(jì)算兩個(gè)字符相似度的幾種常用方法,這是一個(gè)很實(shí)用的功能,該方法需要傳入兩個(gè)字符串,經(jīng)過(guò)計(jì)算會(huì)返回兩個(gè)字符串的相似度,需要的朋友可以參考下
    2023-10-10
  • java數(shù)組基礎(chǔ)詳解

    java數(shù)組基礎(chǔ)詳解

    這篇文章主要介紹了Java數(shù)組基礎(chǔ)詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11

最新評(píng)論

山丹县| 伊川县| 静安区| 黄梅县| 县级市| 宁国市| 元朗区| 扎赉特旗| 巴马| 五指山市| 鸡泽县| 黔西| 安陆市| 台中市| 定襄县| 武冈市| 铜川市| 大庆市| 凤山县| 任丘市| 永城市| 察雅县| 皋兰县| 红桥区| 依兰县| 庆云县| 庆阳市| 济源市| 新野县| 葫芦岛市| 小金县| 甘泉县| 定远县| 荆门市| 托克托县| 象山县| 余干县| 太谷县| 高邑县| 汤阴县| 阳泉市|