SpringBoot事务管理

SpringBoot事务管理

事务的概念:指多个SQL作为单一逻辑单元进行执行的操作,要么完全执行,要么完全不执行。
事务的特性:ACID

  • 原子性:多个SQL语句,要么都执行,要么都不执行。
  • 一致性:事务完成必须使所有的数据保持一致。
  • 隔离性:当前事务的修改必须与其他事务隔离开(不能同时对同一个数据进行操作)。
  • 持久性:事务执行完毕后,对数据的影响是永久的。

做实验:更新一条数据;产生异常;删除一条数据。
1.Hello.java

package com.example.demo.Controller;

import com.example.demo.Service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Hello{

    @Autowired
    private UserService userService;

    @RequestMapping("/trans")
    public String trans(){
        userService.tranfor();
        return "success";
    }
}

2.UserMapper.java

package com.example.demo.Mapper;

import com.example.demo.Entity.User;
import org.apache.ibatis.annotations.*;

@Mapper
public interface UserMapper {

    @Update("update user set sex = #{sex} where username = #{username}")
    void updateUserInfo(@Param("username") String username, @Param("sex") String sex);

    @Delete("delete from user where id = #{id}")
    void deleteUserInfo(@Param("id") Integer id);
}

3.UserService.java

package com.example.demo.Service;

import com.example.demo.Entity.User;

public interface UserService {

    void tranfor();
}

4.UserServiceImpl.java

package com.example.demo.Service;

import com.example.demo.Entity.User;
import com.example.demo.Mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    @Transactional
    public void tranfor(){
        //更新一条数据
        userMapper.updateUserInfo("张三","女");

        //抛出一个异常
        System.out.println("修改成功,即将执行删除");
        int a = 2 / 0;

        //删除一条数据
        userMapper.deleteUserInfo(1);
    }
}

5.在浏览器中测试
浏览器测试
(这个异常捕获看不懂可以看前面的笔记)
6.数据库中验证(数据是否更新和删除)
数据库验证

7.将异常语句注释掉
UserServiceImpl.java

package com.example.demo.Service;

import com.example.demo.Entity.User;
import com.example.demo.Mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    @Transactional
    public void tranfor(){
        //更新一条数据
        userMapper.updateUserInfo("张三","女");

        //抛出一个异常
        System.out.println("修改成功,即将执行删除");
        //int a = 2 / 0;

        //删除一条数据
        userMapper.deleteUserInfo(1);
    }
}

8.在浏览器中测试
浏览器中进行测试
9.数据库中验证(数据是否更新和删除)
数据库中验证

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值