一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring 中jdbcTemplate 實現執行多條sql語句示例

Spring 中jdbcTemplate 實現執行多條sql語句示例

2020-07-26 15:09菜鳥寶寶 Java教程

本篇文章主要介紹了Spring 中jdbcTemplate 實現執行多條sql語句示例,可以對多個表執行多個sql語句,有興趣的可以了解一下。

說一下Spring框架中使用jdbcTemplate實現多條sql語句的執行:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void 權限分配(){
    //1.客戶端復選框傳遞過來一個數組1,2 菜單的ID
    Integer[] menus =new Integer[]{1,2};
    //2.聲明sql數組
    String [] sql =new String [menus.length+1];
    //3.通過Role_id 200 刪除表中數據
    sql[0] = "delete from role_link_menu where fk_role_id=200";
    //4新數據添加到中間表
    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);
  }

前提我們已經連接好數據庫

這樣我們一共執行了3條SQL語句

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語句出現問題都會回滾[**]會所有語句沒有執行前的最初狀態^_^

對比下面一組代碼,我們就可以發現其中不同

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Test
  public void 權限分配單個處理() throws Exception{
    //1.通過Role_id 200 刪除表中數據
    String sql = "delect from role_link_menu where fk_role_id=200";
    jdbcTemplate.update(sql);
    //2.客戶端復選框傳遞過來一個數組1,2 菜單的id
    Integer[] menus =new Integer[]{1,2};
    //3.新數據添加到中間表
    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);
    }
  }

這里當i=1會出現異常程序終止,共執行了2條語句

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)";

下面一句不會執行,但之前這兩條執行完畢,就相當于本來我們要買啤酒喝炸雞,賬戶錢扣了,結果就只給了你一罐啤酒,是不是郁悶捏,啊哈,反正我不會開心

滴~~~ 

**注:

回滾:事務是一組組合成邏輯工作單元的操作,雖然系統中可能會出錯,但事務將控制和維護事務中每個操作的一致性和完整性。

例如,在將資金從一個帳戶轉移到另一個帳戶的銀行應用中,一個帳戶將一定的金額貸記到一個數據庫表中,同時另一個帳戶將相同的金額借記到另一個數據庫表中。由于計算機可能會因停電、網絡中斷等而出現故障,因此有可能更新了一個表中的行,但沒有更新另一個表中的行。

如果數據庫支持事務,則可以將數據庫操作組成一個事務,以防止因這些事件而使數據庫出現不一致。如果事務中的某個點發生故障,則所有更新都可以回滾到事務開始之前的狀態。如果沒有發生故障,則通過以完成狀態提交事務來完成更新。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/jiangxiulian/p/5444302.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: tube性睡觉hd| 175m美女被网友灌醉啪啪玩脚 | 好大好硬好长好爽a网站 | 成人啪啪漫画羞羞漫画www网站 | 欧美一区二区三区免费看 | 娇妻中日久久持久久 | 日本hd18 | 成人日b视频 | 免费在线观看中文字幕 | 19+韩国女主播激情vip视频在线 | 亚洲一二区视频 | 日本黄大片影院一区二区 | 青青草原影院 | 日韩 国产 欧美 精品 在线 | 亚洲天堂网站 | 亚洲色图欧美偷拍 | 亚洲精品综合一二三区在线 | 91九色在线视频 | 青青在线视频免费 | 精品国产一区二区 | 草草在线影院 | 日韩免费在线看 | 激情影院免费 | 亚洲va久久久久综合 | 亚洲欧美日韩成人 | 欧美性色欧美a在线播放 | zol中关村在线 | 日本一区二区免费在线观看 | 免费免费啪视频在线观播放 | 国产福利你懂的 | 四川女人偷人真实视频 | 久久免费黄色 | 日本最新伦中文字幕 | 日本黄色录像视频 | 白丝女榨干蹂躏我 | 亚洲第五色综合网啪啪 | 91视频99| 波多野结衣 在线 | 国产绳艺在线播放 | 99视频免费在线观看 | 美女靠逼动漫 |