<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      seata學習-簡單demo入門

      概述

      學習一個框架,我喜歡從demo中了解該框架所能達到的效果再進行深入地學習。本篇文章將會介紹 seata 的一個入門使用 demo ,作為使用 seata 的入門學習文章。

      使用案例

      首先到github 中下載一個 RM 的運行服務,本例中使用的是 :

      https://github.com/seata/seata/releases/download/v1.2.0/seata-server-1.2.0.zip

      解壓后在 /bin 路徑下啟動 bat 文件

      接著自然就是demo 資源的下載了 :

      https://github.com/seata/seata-samples

      我們這里是使用的 MyBatis 和 Spring boot 和 seata 的整個案例,所涉及的 SQL 語句在 demo 路徑下的 sql 文件夾下 :

      1297993-20200515143746918-279617761.png

      可以看到 springboot-mybatis 共有5個子項目,我們本地執行完sql ,記得修改每個子項目中的 application.yml 文件中關于數據庫的配置 ,例如 :

      server:
        port: 8082
      spring:
        datasource:
          type: com.alibaba.druid.pool.DruidDataSource
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/db_order?useSSL=false&serverTimezone=UTC
          username: root
          password: 12345678
      seata:
          ....
          ....
      
      

      修改完啟動,其中sbm-business-service 有個Controller 提供接口供我們測試 :

      @RequestMapping("/api/business")
      @RestController
      public class BusinessController {
      
          @Autowired
          private BusinessService businessService;
      
          /**
           * 購買下單,模擬全局事務提交
           *
           * @return
           */
          @RequestMapping("/purchase/commit")
          public Boolean purchaseCommit(HttpServletRequest request) {
              businessService.purchase("1001", "2001", 1);
              return true;
          }
      
          /**
           * 購買下單,模擬全局事務回滾
           *
           * @return
           */
          @RequestMapping("/purchase/rollback")
          public Boolean purchaseRollback() {
              try {
                  businessService.purchase("1002", "2001", 1);
              } catch (Exception e) {
                  e.printStackTrace();
                  return false;
              }
      
              return true;
          }
      }
      

      可以看到這是一個模擬購物,訂單和用戶余額還有貨物的例子,我們可以看一下數據庫中的金額, 邏輯: 用戶扣錢-> 庫存-1 -> 訂單庫插入一條數據
      這幾個操作是不同事務,執行成功的話應該會同時一起執行,失敗的話會一起回滾。
      postman 調用 : localhost:8084/api/business/purchase/commit ,我們看一下執行成功后的結果 :
      db_account.account_tbl 表的數據

      id	user_id	money
      1	1001	9995
      2	1002	10000
      
      

      db_storage.storage_tbl 中的數據

      id	commodity_code	count
      1	2001	999
      

      db_order.order_tbl 表中的數據

      id	user_id	commodity_code	count	money
      1	1001	2001	1	5
      

      ok,事務執行是成功的。

      總結

      該篇只是簡單地介紹 seata 框架demo 等簡單使用,方便大家入門,后續將繼續深入 seata 的學習

      參考資料

      posted @ 2023-08-14 22:10  float123  閱讀(293)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品先锋资源站先锋影院| 成人一区二区三区激情视频| 国产青榴视频在线观看| 极品美女扒开粉嫩小泬图片 | 久久久精品94久久精品| 91九色国产成人久久精品| 啊┅┅快┅┅用力啊岳网站| 亚洲国产精品久久久天堂麻豆宅男 | 亚洲一卡2卡3卡4卡精品| 国产网友愉拍精品视频手机| www国产精品内射熟女| 国产成人精品无码播放| 日韩欧美卡一卡二卡新区| 国产呦交精品免费视频| 成人国产亚洲精品一区二区| 成人av一区二区三区| 亚洲精品一区二区美女| 成人福利国产午夜AV免费不卡在线| 一本一本久久A久久精品综合不卡 一区二区国产高清视频在线 | 免费看的一级黄色片永久| 在线视频中文字幕二区| 虎白女粉嫩尤物福利视频| 国产精品入口麻豆| 国产SM重味一区二区三区 | 欧美色欧美亚洲高清在线视频 | 久久婷婷大香萑太香蕉AV人| 国产成人综合久久亚洲av| 狠狠躁夜夜躁人人爽天天bl| 亚洲中文字幕无码av永久| av在线播放无码线| 亚洲午夜av久久久精品影院| 国产精品欧美福利久久| 欧美性猛交xxxx乱大交极品| 欧美成人精品一区二区三区免费| 国产成人啪精品视频免费网| 国产AV无码专区亚洲AWWW| 中文字幕一区二区三区久久蜜桃| 少妇无套内射中出视频| 国产高清乱码又大又圆| 国产精品久久久久精品日日| 高清无码爆乳潮喷在线观看|