Mybatis-事务管理,事务配置

article/2025/9/16 3:34:45

事务的特征–

1.原子性
事务是数据库的逻辑工作单位,事务中包括的所有操作,要么全做,要么全部做
2.一致性
事务执行的结果必须是使数据库从一个一致性状态飙到另一个一致性状态,一致性与原子性是密切相关
3.隔离性
一个事务的执行不能被其他事务干扰,既是事务与事务之间是互不干扰的
4.持续性/永久性
一个事务一旦提交,他对数据库的改变就应该是永久性的

1.开始干活,首先新建一个数据表Account

在这里插入图片描述

2.用自动生成包和代码的那个模板帮我们生成Account表对应的mapper文件

在这里插入图片描述

3.创建AccountDao,在里面编写这个数据增减的操作,首先查询主键为对应数字的对象命名为xq/bz,然后进行数值加减数值加减完以后放回bz对象里面,然后再更新到数据库。利用subtract()进行减,add()进行增加

在这里插入图片描述
然后再创建一个text类来测试
在这里插入图片描述
然后发现Junit运行出错,第一个错误是我的AccountMapper.xml文件里面没有修改好第二个错误是在这里插入图片描述
也就是找不到我的Dao

分析一波,首先测试类中是通过spring-mybatis.xml容器来找到我们的dao,所以我们要在前面那个AccountDao.java中加上注解,让容器获得我们的Dao,在类上加上注解@Component
在属性上添加注解@Autowired

在这里插入图片描述4.最后查看数据库,数据发生了变化证明成功了

5.把事务管理的内容都加到spring-mybatis.xml文件中去

<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /><tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /><tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /><tx:method name="batch*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" /></tx:attributes></tx:advice><aop:aspectj-autoproxy proxy-target-class="true" /><!-- 事务处理 --><aop:config><aop:pointcut id="pc" expression="execution(* com.chair.test.service..*(..))" /><aop:advisor pointcut-ref="pc" advice-ref="txAdvice" /></aop:config>

在这里插入图片描述
如果有报错的话那么就在xml文件下面的那个
在这里插入图片描述
在这里插入图片描述
也就是在哪个包里面生效

我们以后编写的业务逻辑的代码都放到service层里面

6.创建service层的包,创建service类

在这里插入图片描述

7.将dao层的包名改为service.impl,且将里面的dao类名都改为service,然后实现service接口

在这里插入图片描述
在这里插入图片描述
编写测试类
在这里插入图片描述
给AccountService接口添加上zhuangzhang这个方法
在这里插入图片描述
修改spring-mybatis.xml中改为Service层的包名
在这里插入图片描述
在上面没有zhuanzhang这个方法,所以事务不生效,解决方法有两种
1)在上面配多一个zhuanzhang的方法提交到事务
在这里插入图片描述
2)第二种就是将方法名改为上面所拥有的那些方法名作为前缀
在这里插入图片描述


http://chatgpt.dhexx.cn/article/4LLH5NYT.shtml

相关文章

springboot+mybatis整合配置事务详解(^_^)

springboot集成mybatis有三种方式&#xff1a; 一、最简单的方式就是使用MyBatis官方提供的 mybatis-spring-boot-starter。 二、另一种使用spring-mybatis包的xml配置方式&#xff0c;这样需要自己写一些代码&#xff0c;但可以更灵活的控制mybatis的各项配置。 三、使用引…

第08篇:Mybatis事务处理

一、Jdk底层实现 Java JDK中提供了标准接口Connection,不同的数据库驱动负责具体的实现。后面无论是Spring还是Mybatis对事务的处理&#xff0c;无论怎么的封装,最终究其到底都是由Connection来提供的能力。 public interface Connection extends Wrapper, AutoCloseable { …

Mybatis中的事务提交

数据表不支持事务&#xff0c;mybatis会直接提交数据&#xff0c;即增删改不需要commit&#xff08;MyISAM引擎不支持事务&#xff09;&#xff1b; 数据表支持事务&#xff0c;默认mybatis需要手动提交事务&#xff0c;也可以设置为自动提交&#xff0c;如下 &#xff08;设…

Mybatis 的事务控制

事务&#xff1a;访问并可能更新数据库中各种数据项的一个程序执行单元(unit) 事务的四个特性&#xff1a;原子性、一致性、隔离性、持久性 不考虑隔离性的三个问题&#xff1a;丢失修改、不可重复读&#xff0c;读脏数据 解决办法&#xff1a;四种隔离级别文章目录 一、Mybati…

Mybatis深入之事务管理

Mybatis之事务管理 简介 Mybatis的事务管理分为两种JdbcTransaction&#xff0c;ManagedTransaction。其中JdbcTransaction仅仅是对数据库连接Connection的一个包装、内部管理数据库事务还是调用Connection的提交、回滚等事务操作方法。ManagedTransaction更直接、什么也没有…

事务-2 Spring与Mybatis事务实现原理

背景&#xff1a; 本文承接事务-1 事务隔离级别和Spring事务传播机制&#xff0c;是事务专题的第二篇&#xff1b;主题内容是Mybatis和Spring事务原理&#xff0c;结合源码和案例进行介绍。 本文主题内容为事务原理, 尤重Spring事务原理; 会结合源码讲解整体流程, 但不会拘限于…

什么是事务?Mysql事务怎么用?Mybatis怎么操作事务的?Spring呢?快进来看看

目录 一、计算机中的事务 1. 概念 2.事务的ACID特性 3.事务类型 1)手动事务 2)自动事务 4.为什么需要事务? 5.优点 二、MySQL事务 1.语法格式: 2.关闭自动提交&#xff0c;开启新事务 3.开启自动提交&#xff0c;关闭事务控制 三、Mybatis事务 Mybatis开关事务控…

SpringBoot Mybatis事物管理

本文主要讲述springboot提供的声明式的事务管理机制。 一、一些概念 声明式的事务管理是基于AOP的&#xff0c;在springboot中可以通过Transactional注解的方式获得支持&#xff0c;这种方式的优点是&#xff1a; 1&#xff09;非侵入式&#xff0c;业务逻辑不受事务管理代码…

spring boot配置mybatis和事务管理

spring boot配置mybatis和事务管理 一、spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下&#xff1a; <!-- Spring Boot 启动父依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>s…

《深入理解mybatis原理》 MyBatis事务管理机制

MyBatis作为Java语言的数据库框架&#xff0c;对数据库的事务管理是其非常重要的一个方面。本文将讲述MyBatis的事务管理的实现机制。首先介绍MyBatis的事务Transaction的接口设计以及其不同实现JdbcTransaction 和 ManagedTransaction&#xff1b;接着&#xff0c;从MyBatis的…

MyBatis事务管理

一、概述 事务管理对于企业应用来说是至关重要的&#xff0c;即使出现异常情况&#xff0c;它也可以保证数据的一致性。 Spring Framework对事务管理提供了一致的抽象&#xff0c;其特点如下&#xff1a; 为不同的事务API提供一致的编程模型&#xff0c;比如JTA(Java Transac…

深入浅出Mybatis系列(五)Mybatis事务篇

在学习Mysql事务开始,分为两步。一.先看下Mysql的事务级别都有什么,然后看Mysql的事务级别设置命令。及常见问题。二.JDK是如何处理数据库操作的呢? Mybatis是如何实现JDK定义的事务级别操作。 一.Mysql的事务级别及常见概念 MySQL事务隔离级别 事务隔离级别脏读不可重复读幻…

详解 MyBatis 事务管理,彻底颠覆你对事务的理解!

来源&#xff1a;https://my.oschina.net/zudajun/blog/666764 前言 说到数据库事务&#xff0c;人们脑海里自然不自然的就会浮现出事务的四大特性、四大隔离级别、七大传播特性。四大还好说&#xff0c;问题是七大传播特性是哪儿来的&#xff1f;是 Spring 在当前线程内&…

MyBatis的事务

Mybatis管理事务是分为两种方式: (1)使用JDBC的事务管理机制,就是利用java.sql.Connection对象完成对事务的提交 (2)使用MANAGED的事务管理机制&#xff0c;这种机制mybatis自身不会去实现事务管理&#xff0c;而是让程序的容器&#xff08;JBOSS,WebLogic&#xff09;来实现对…

MyBatis--事务

事务是基于关系型数据库的企业应用的重要组成部分&#xff0c;用来确保应用程序数据的完整性和一致性。 事务就是一个系列(一组、几个)操作的集合单元&#xff0c;这些操作要么全部完成&#xff0c;要么全部失败&#xff0c;如果某一个操作失败&#xff0c;就算是已经成功执行…

ResNet网络结构解析

ResNet是识别、检测中常用的backbone&#xff0c;看检测相关论文的时候重点都在方法创新上&#xff0c;并没有特别在意网络结构&#xff0c;但是到自己跑实验改网络的时候就涉及到结构细节问题&#xff0c;于是详细的看了下ResNet网络结构。下图是ResNet的网络结构简图&#xf…

resnet网络结构图

很重要&#xff0c;单独放

ResNet网络结构,BN以及迁移学习详解

网络中的亮点&#xff1a; 1.超深的网络结构&#xff08;超过1000层&#xff09; 2.提出residual(残差)模块 3.使用Batch Normalization加速训练&#xff08;丢弃dropout&#xff09; 左边是将卷积层和池化层进行一个简单的堆叠所搭建的网络结构 20层的训练错误率大概在1%…

ResNet网络结构详解(Tensorflow2.6.0实现网络结构)

文章目录 1.ResNetX网络结构表&#xff08;1&#xff09;论文地址&#xff1a;&#xff08;2&#xff09;ResNet18网络结构&#xff1a;&#xff08;3&#xff09;ResNet34网络结构&#xff1a; 2.卷积神经网络的发展(1).卷积神经网络的发展&#xff1a;&#xff08;2&#xff…

ResNet网络结构详解,网络搭建,迁移学习

前言&#xff1a; 参考内容来自up&#xff1a;6.1 ResNet网络结构&#xff0c;BN以及迁移学习详解_哔哩哔哩_bilibili up的代码和ppt&#xff1a;https://github.com/WZMIAOMIAO/deep-learning-for-image-processing 一、简介 ResNet 网络是在 2015年 由微软实验室提出&#xf…