Spring笔记(五)声明式事务

本文回顾了事务的ACID原则,并重点介绍了Spring框架中的声明式事务管理,通过AOP实现事务切面,保证数据一致性。同时提及编程式事务,但通常不推荐使用。
摘要由CSDN通过智能技术生成

一、事务回忆

  • 要么都成功,要么都失败。
  • 在项目开发中非常重要,涉及到数据的一致性。
  • 确保数据的完整性和一致性。

事务的ACID原则:

  1. 原子性
  2. 一致性
  3. 隔离性:多个业务可能操作同一数据,需要防止数据损坏
  4. 持久性:事务一旦提交,无论发生什么问题,结果不会被影响

mapper👇

  • 故意写错delete语句,测试事务
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.spring.Mapper.UserMapper">

    <select id="selectUser" resultType="user">
        select * from mybatis.user;
    </select>

    <insert id="addUser" parameterType="User">
        insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd});
    </insert>

    <!--故意写错语句,测试事务-->
    <delete id="deleteUser" parameterType="int">
        deletes from mybatis.user where id = #{id};
    </delete>
</mapper>

  • 调用语句👇
    public List<User> selectUser() {
   
        User user = new User(2,"ls","456");
        UserMapper mapper = getSqlSession().getMapper(UserMapper.class);
        mapper.addUser(user);
        //由于这一步sql语句写错,肯定会报错,但是上一步的添加已经实现
        mapper.deleteUser(2);
        return mapper.selectUser();
    }
  • 提示语句错误!但是数据库中的第一步增加已经加入,这不是我们想要的。
    在这里插入图片描述

  • 接下来添加事务,实现要么全成功,要么全失败。

二、spring中的事务大概分两类

1、声明式事务(AOP横切,不影响源代码)

  • spring事务导包(新版的JDBC可能自带)
        <dependency>
            <groupId>org.aspectj</groupId>
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值