目录

Spring事务操作-事务

1.什么是事务

(1)典型场景

2.事务的四个特性(俗称ACID特性)

(1)原子性

(2)一致性

(3)隔离性

(4)持久性

3.搭建事务(搭建银行转账环境)

4.创建数据库表

5.创建service ,搭建dao

6.测试类:

7.测试结果:


Spring事务操作-事务

1.什么是事务

什么是事务:事物是数据库操作的最基本单元,逻辑上的一组操作,要么都成功,如果有一个失败所有操作都失败

(1)典型场景

银行转账:

A转100给B,

A少100,B多100,

其中任何一个环节出现错误或者异常,这么一组操作都会失败

2.事务的四个特性(俗称ACID特性)

(1)原子性

要么都成功,一个失败=全部失败

(2)一致性

操作之前和操作之后总量不变,100块钱怎么转都还是100块钱,不会多也不会少

(3)隔离性

多事务操作互不影响

(4)持久性

事务最终提交后,表的数据完成更新

3.搭建事务(搭建银行转账环境)

配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><!--    开启组件扫描--><context:component-scan base-package="org.example"></context:component-scan>
<!--数据库连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="url" value="jdbc:mysql://localhost:3306/user_db?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="sise"/><property name="driverClassName" value="com.mysql.jdbc.Driver"/></bean><!--    创建jdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--需要注入数据源信息--><property name="dataSource" ref="dataSource"></property></bean>
</beans>

4.创建数据库表

数据库名为user_db 数据库表为t_account

添加两条记录

5.创建service ,搭建dao

(1)service注入dao,在dao注入jdbcTemplate,在jdbcTemplate 注入 DataSource

package org.example.spring.service;import org.example.spring.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserService {@Autowiredprivate UserDao userDao;//    转账方法调用public void accountMoney(){//lucy少100userDao.reduceMoney();//mary多100userDao.addMoney();}}

(2)在dao创建两个方法:多钱和少钱的方法,在service创建方法(转账的方法)

抽象类:

package org.example.spring.dao;public interface UserDao {
//多钱的方法public void addMoney();
//少钱的方法public void reduceMoney();
}

实现类:

package org.example.spring.dao;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class UserDaoImpl implements UserDao{@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic void reduceMoney() {String sql="update t_account set money=money-? where username=?";jdbcTemplate.update(sql,100,"lucy");}@Overridepublic void addMoney() {String sql="update t_account set money=money+? where username=?";jdbcTemplate.update(sql,100,"mary");}}

6.测试类:

package org.example.spring.test;import org.example.spring.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook
{
@Testpublic void test(){ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");UserService userService = context.getBean("userService", UserService.class);userService.accountMoney();}}

7.测试结果:

先:

后:

Spring事务操作-事务相关推荐

  1. Spring事务操作-事务引入

    目录 Spring事务操作-事务引入 1.模拟异常 2.测试异常 3.没有使用spring框架的时候异常该如何处理 4.使用spring框架的时候异常该如何处理 5.在spring 进行声明式事务管理 ...

  2. golang之gorm的事务操作 事务不成功原因

    一.回顾知识点 1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文 ...

  3. spring中aop事务

    文章目录 事务 为什要用到Spring中AOP事务 事物的特性 ACID 事务并发问题 事务的隔离级别 spring事务管理 事务操作 事务操作对象 spring管理事务的属性介绍 spring管理事 ...

  4. Spring事务与事务传播机制

    目录 1.事务的基本概念 2.Spring事务的实现 3.事务隔离级别 4.事务传播机制 1.事务的基本概念 关于事务的一些基础概念我已经在MYSQL中讲解过了,有不了解的可以移步至此篇文章: MyS ...

  5. JavaEE进阶 - Spring事务和事务传播机制 - 细节狂魔

    文章目录 1.为什么需要事务?(回顾) 2.Spring 中事务的实现 MySQL 中的事务使用(回顾) 1.⼿动操作事务(编程式事务) 2. 声明式事务(利用注解自动开启和提交事务) @Transa ...

  6. Spring5学习笔记------5、事务操作

    事务操作 事务是数据库操作的最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作则都失败 事务的四大特性: 原子性( A ): 事务是最小的工作单元,不可再分,事务中的操作要么都发生,要么都 ...

  7. 如何处理SQL Server事务复制中的大事务操作

    如何处理SQL Server事务复制中的大事务操作 事务复制的工作机制 事务复制是由 SQL Server 快照代理.日志读取器代理和分发代理实现的.快照代理准备快照文件(其中包含了已发布表和数据库对 ...

  8. mysql 一对一关联查询_学习ThinkPHP的第20天--MySQL事务操作、查询事件、一对一关联...

    之所以从20天才开始写随笔记是因为之前没搞自己的博客 从20天开始记录我在ThinkPHP中的点点滴滴 1.MySQL事务操作 /**事务操作*/ //startTrans启动事务.rollback回 ...

  9. CC00073.kafka——|Hadoopkafka.V58|——|kafka.v58|稳定性|事务操作|

    一.事务操作 ### --- 事务操作~~~ # 在Kafka事务中,一个原子性操作,根据操作类型可以分为3种情况.情况如下: ~~~ 只有Producer生产消息,这种场景需要事务的介入: ~~~ ...

最新文章

  1. jquery 和js 还有 jq 挂事件
  2. java命令查看jvm内存
  3. 给羊羔:学习web前端开发的路线(一)
  4. 热议:这样的开源项目,你会支持吗?
  5. 【PAT乙级】1032 挖掘机技术哪家强 (20 分)
  6. java se 动态添加视图组件_博为峰Java技术题 ——JavaSE Java Swing在顶层容器中添加菜单栏Ⅰ...
  7. webpack:js、css、es6装载与压缩配置-学习笔记
  8. Linux 命令之 rpmbuild -- 用于创建 rpm 格式的二进制软件包和源码软件包
  9. TZOJ--5480: 孤衾易暖 // POJ--3735 Training little cats (矩阵快速幂)
  10. 女孩子们,你的专业由你做主
  11. 织梦php重新安装教程,织梦CMS系统后台重装的操作教程
  12. Mvc检查图片格式后上传
  13. 随想录(mysql之基础篇)
  14. Bitmap 和Drawable 的区别
  15. 人不能轻易暴露自己的底牌,否则会陷入被动的局面
  16. 那些唱衰智能电视的砖家们可以闭嘴了
  17. YY语音CTO赵斌的技术创业
  18. 出口退税的操作明细流程
  19. html中的项目符号和编号,CSS重新定义项目符号和编号
  20. Linux生成校验文件asc,使用 GnuPG 加密签名来验证下载文件的可靠性和完整性

热门文章

  1. [机器学习] Apriori算法
  2. 基于原版Hadoop的YDB部署(转)
  3. XidianOJ 1195 Industry of Orz Pandas
  4. ZOJ 3300 Mahjong DFS暴力解决。。
  5. Snap Shots 出了新东西
  6. LeetCode 1480 一维数组的动态和
  7. 教学5层网络体系结构——分层之后数据的发送和接收
  8. Leetcode--226. 翻转二叉树
  9. 计算机插件技术应用原理,计算机软件技术中插件技术的运用
  10. c语言课设报告时钟vc环境,C语言课程设计报告模拟时钟转动程序