Spring事务操作-事务
目录
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&useUnicode=true&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事务操作-事务相关推荐
- Spring事务操作-事务引入
目录 Spring事务操作-事务引入 1.模拟异常 2.测试异常 3.没有使用spring框架的时候异常该如何处理 4.使用spring框架的时候异常该如何处理 5.在spring 进行声明式事务管理 ...
- golang之gorm的事务操作 事务不成功原因
一.回顾知识点 1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文 ...
- spring中aop事务
文章目录 事务 为什要用到Spring中AOP事务 事物的特性 ACID 事务并发问题 事务的隔离级别 spring事务管理 事务操作 事务操作对象 spring管理事务的属性介绍 spring管理事 ...
- Spring事务与事务传播机制
目录 1.事务的基本概念 2.Spring事务的实现 3.事务隔离级别 4.事务传播机制 1.事务的基本概念 关于事务的一些基础概念我已经在MYSQL中讲解过了,有不了解的可以移步至此篇文章: MyS ...
- JavaEE进阶 - Spring事务和事务传播机制 - 细节狂魔
文章目录 1.为什么需要事务?(回顾) 2.Spring 中事务的实现 MySQL 中的事务使用(回顾) 1.⼿动操作事务(编程式事务) 2. 声明式事务(利用注解自动开启和提交事务) @Transa ...
- Spring5学习笔记------5、事务操作
事务操作 事务是数据库操作的最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作则都失败 事务的四大特性: 原子性( A ): 事务是最小的工作单元,不可再分,事务中的操作要么都发生,要么都 ...
- 如何处理SQL Server事务复制中的大事务操作
如何处理SQL Server事务复制中的大事务操作 事务复制的工作机制 事务复制是由 SQL Server 快照代理.日志读取器代理和分发代理实现的.快照代理准备快照文件(其中包含了已发布表和数据库对 ...
- mysql 一对一关联查询_学习ThinkPHP的第20天--MySQL事务操作、查询事件、一对一关联...
之所以从20天才开始写随笔记是因为之前没搞自己的博客 从20天开始记录我在ThinkPHP中的点点滴滴 1.MySQL事务操作 /**事务操作*/ //startTrans启动事务.rollback回 ...
- CC00073.kafka——|Hadoopkafka.V58|——|kafka.v58|稳定性|事务操作|
一.事务操作 ### --- 事务操作~~~ # 在Kafka事务中,一个原子性操作,根据操作类型可以分为3种情况.情况如下: ~~~ 只有Producer生产消息,这种场景需要事务的介入: ~~~ ...
最新文章
- jquery 和js 还有 jq 挂事件
- java命令查看jvm内存
- 给羊羔:学习web前端开发的路线(一)
- 热议:这样的开源项目,你会支持吗?
- 【PAT乙级】1032 挖掘机技术哪家强 (20 分)
- java se 动态添加视图组件_博为峰Java技术题 ——JavaSE Java Swing在顶层容器中添加菜单栏Ⅰ...
- webpack:js、css、es6装载与压缩配置-学习笔记
- Linux 命令之 rpmbuild -- 用于创建 rpm 格式的二进制软件包和源码软件包
- TZOJ--5480: 孤衾易暖 // POJ--3735 Training little cats (矩阵快速幂)
- 女孩子们,你的专业由你做主
- 织梦php重新安装教程,织梦CMS系统后台重装的操作教程
- Mvc检查图片格式后上传
- 随想录(mysql之基础篇)
- Bitmap 和Drawable 的区别
- 人不能轻易暴露自己的底牌,否则会陷入被动的局面
- 那些唱衰智能电视的砖家们可以闭嘴了
- YY语音CTO赵斌的技术创业
- 出口退税的操作明细流程
- html中的项目符号和编号,CSS重新定义项目符号和编号
- Linux生成校验文件asc,使用 GnuPG 加密签名来验证下载文件的可靠性和完整性