在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    Spring項目中的@Transactional事務管理

    項目中,很多時候數(shù)據(jù)是相對的,

    例如:用戶A付錢給用戶B,那么用戶A的賬戶需被扣錢。所扣的錢需被加到用戶B的賬戶上;

    但是在項目中,我們的代碼走向是,先扣除了用戶A的賬戶錢,這個時候,數(shù)據(jù)已經(jīng)被寫入SQL中,并且被提交,如果這個時候出現(xiàn)代碼錯誤,無法往下繼續(xù)走時,會導致,用戶B并沒有獲取到本該增加的錢,其實這個時候很容易出現(xiàn)問題

    這個時候就需要引入@Transactional事務管理;將這個注解放置在所需要的放置的service層的對應方法上;

    這個時候,@Transactional將會作用于該方法上,@Transactional注解是將方法體內(nèi)執(zhí)行的代碼。先預先暫存在一個地方

    隊友只有當方法內(nèi)的代碼全部成功走完之后,才會對數(shù)據(jù)進行成功操作;如果中間出現(xiàn)錯誤的代碼,導致執(zhí)行不下去時,會將前面已經(jīng)執(zhí)行成功的數(shù)據(jù),直接false,不會將對應數(shù)據(jù)提交;

    這個一般來說我們會使用在增刪改這三個操作的前面加上@Transactional,查詢的話,就不需要加上

    例如:我們需要更新數(shù)據(jù)庫表中老師的內(nèi)容:如果在進行更新時,出現(xiàn)錯誤時,是否會被真的修改掉??

    controller層:

    package com.cmj.controller;

    import java.util.List;

    import org.apache.ibatis.annotations.Param;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.web.bind.annotation.DeleteMapping;

    import org.springframework.web.bind.annotation.GetMapping;

    import org.springframework.web.bind.annotation.PostMapping;

    import org.springframework.web.bind.annotation.PutMapping;

    import org.springframework.web.bind.annotation.RequestBody;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.RequestParam;

    import org.springframework.web.bind.annotation.RestController;

    import com.cmj.entity.Teacher;

    import com.cmj.service.UserService;

    import com.github.pagehelper.PageInfo;

    @RestController

    @RequestMapping(“/teacher”)

    public class TeacherController {

    @Autowired

    private UserService userService;

    // 修改老師

    @PutMapping(“/update”)

    public String update(@RequestBody Teacher teacher) {

    return userService.update(teacher);

    }

    }

    2、Mapper數(shù)據(jù)

    TeacherMapper.java

    package com.cmj.dao;

    import java.util.List;

    import org.apache.ibatis.annotations.Mapper;

    import org.apache.ibatis.annotations.Param;

    import com.cmj.entity.Teacher;

    @Mapper

    public interface TeacherMapper {

    public void updateTeacher(Teacher teacher);

    }

    TeacherMapper.xml

    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

    “http://mybatis.org/dtd/mybatis-3-mapper.dtd”>

    UPDATE `teacher` SET

    `pass_word`=#{passWord}

    WHERE (`name`=#{name})

    3、service執(zhí)行代碼:

    package com.cmj.service;

    import java.util.List;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.stereotype.Service;

    import org.springframework.transaction.annotation.Transactional;

    import com.cmj.dao.TeacherMapper;

    import com.cmj.entity.Teacher;

    import com.github.pagehelper.PageHelper;

    import com.github.pagehelper.PageInfo;

    @Service

    public class UserService {

    @Autowired

    private TeacherMapper teacherMapper;

    // 修改老師

    @Transactional

    public String update(Teacher teacher) {

    teacherMapper.updateTeacher(teacher);

    int i = 1 / 0;

    teacherMapper.deleteByName(“nini”);

    return “成功”;

    }

    當我們在修改老師這個方法體上加上 @Transactional注解后,當代碼執(zhí)行時

    ①、teacherMapper.updateTeacher(teacher);進行更新teacher時,系統(tǒng)不會馬上對表中的數(shù)據(jù)進行更新;而是先存放在一個地方,等待整個方法內(nèi)的代碼執(zhí)行成功后再進行提交;(如果出現(xiàn)錯誤,則不會被更新)

    ②、當代碼走到:int i = 1 / 0;時,發(fā)現(xiàn)這個是一個錯誤代碼,代碼走到這邊后,工程停住,無法向下走后,也無法執(zhí)行到teacherMapper.deleteByName(“nini”)刪除老師的代碼;

    ③、當這個方法出現(xiàn)報錯時,第一條的teacherMapper.updateTeacher(teacher)也被直接判定為false,這個方法中的內(nèi)容都不會被執(zhí)行到

    只有當這個方法正常被執(zhí)行后,才可能被執(zhí)行

    所以這就是@Transactional事務管理的作用

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月16日 21:24
    下一篇 2022年6月16日 21:25

    相關推薦

    • ios手游模擬器(手游模擬器ios)

      本文主要講的是ios手游模擬器,以及和手游模擬器ios相關的知識,如果覺得本文對您有所幫助,不要忘了將本文分享給朋友。 哪個iOS模擬器能多開手游賬號?可以推薦個好用的模擬器給我嗎…

      2022年11月27日
    • 分享4條發(fā)微商朋友圈的方法(微商朋友圈應該怎么發(fā))

      對于微商朋友來說,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底該怎么發(fā)呢? 為什么同樣是經(jīng)營一個朋友圈,有的微商看起來逼格滿滿,實際效果也不錯;而有的卻動都不動就被屏蔽甚至拉黑…

      2022年11月27日
    • 30個無加盟費的項目(茶顏悅色奶茶店加盟費多少)

      茶顏悅色又爆了,8月18日,茶顏悅色南京門店正式開業(yè),開張不到半小時,門店就人滿為患,消費者的購買熱情十分高漲,而由于人流量過大造成擁堵,茶顏悅色也不得不暫停營業(yè)。 當然,這里面排…

      2022年11月27日
    • 短視頻策劃內(nèi)容的3個要點(短視頻策劃內(nèi)容怎么做)

      短視頻在制作時,內(nèi)容框架非常重要。如果直奔主題,然后結(jié)束,聚卓告訴你,這樣的短視頻已經(jīng)過時了?,F(xiàn)在的短視頻需要框架的,但不是任何框架,它需要一種易于理解和消化的框架。而且,現(xiàn)在大多…

      2022年11月27日
    • 美團第三季度實現(xiàn)營收626億元,即時配送訂單量增至50億筆

      新京報訊(記者秦勝南)11月25日,美團發(fā)布業(yè)績公告顯示,第三季度營收為626億元,較去年同比增長28.2%,凈利潤為12.2億元。第三季度,美團即時配送訂單數(shù)增長至50億筆。截至…

      2022年11月27日
    • 工商銀行:已為客戶開立個人養(yǎng)老金資金賬戶

      南方財經(jīng)11月25日電,剛剛,21世紀經(jīng)濟報道記者收到工商銀行短信,稱“尊敬的客戶,您已成功開立工商銀行個人養(yǎng)老金資金賬戶,尾號為****,如有疑問,請及時聯(lián)系我行客服熱線9558…

      2022年11月26日
    • 凈利潤率越高越好嗎(凈利潤率多少合適)

      一、持續(xù)增收不增利,平均凈利潤率首次跌入個位數(shù) 2021年,增收不增利依舊是行業(yè)主流。具體來看,大部分企業(yè)營業(yè)收入呈增長態(tài)勢,E50企業(yè)平均同比增速達到17.3%,但是利潤增速則明…

      2022年11月26日
    • 個人怎么做抖音帶貨(個人做抖音帶貨能賺錢嗎)

      抖音如今是大家很熟悉的短視頻平臺,不過現(xiàn)在的抖音卻不只是短視頻那么簡單,它的功能非常豐富,其中一個就是可以帶貨,相信很多小伙伴都有在抖音上買過東西,抖音如今的變現(xiàn)能力也是不容小覷的…

      2022年11月25日
    • 《寶可夢朱紫》學校上課有什么用?學校上課獎勵介紹

      寶可夢朱紫游戲里在學校上課除了會學到寶可夢相關知識外,還可以獲取不同的獎勵,有些玩家不知道有什么獎勵,下面隨小編一起來看下寶可夢朱紫學校上課獎勵介紹吧。 學校上課獎勵介紹 游戲中上…

      2022年11月25日
    • 《寶可夢朱紫》夢特性怎么獲得?隱藏特性獲取方法推薦

      寶可夢朱紫里有很多寶可夢都是擁有夢特性會變強的寶可夢,很多玩家不知道夢特性怎么獲得,下面就給大家?guī)韺毧蓧糁熳想[藏特性獲取方法推薦,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 …

      2022年11月25日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息