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&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.测试结果:

先:

后:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ios 静态库合成_iOS : 静态库(.framework)合并

如果写了一个Framework&#xff0c;根据Build时选择的机器类型&#xff0c;会分为模拟器Framework和真机Framework&#xff0c;两者是不能混用的。此时可以通过配置一个Run Script&#xff0c;在Script中使用lipo命令来合并两个版本的Framework&#xff0c;重新生成一个新的Fra…

python在统计专业的应用_Python:使用Counter进行计数统计

计数统计就是统计某一项出现的次数。实际应用中很多需求需要用到这个模型。比如测试样本中某一指出现的次数、日志分析中某一消息出现的频率等等‘这种类似的需求有很多实现方法。下面就列举几条。 (1)使用dict 看下面代码#codingutf-8 data [‘a‘,‘2‘,2,4,5,‘2‘,‘b‘,4…

Spring事务操作-事务引入

目录 Spring事务操作-事务引入 1.模拟异常 2.测试异常 3.没有使用spring框架的时候异常该如何处理 4.使用spring框架的时候异常该如何处理 5.在spring 进行声明式事务管理&#xff0c;底层使用AOP 6.spring 事务管理API 7.事务操作&#xff08;注解声明式事务管理&…

oracle中取反_oracle正则表达式regexp_like的用法详解

oracle正则表达式regexp_like的用法详解更新时间&#xff1a;2013年06月13日 17:42:05 作者&#xff1a;本篇文章是对oracle正则表达式regexp_like的用法进行了详细的分析介绍&#xff0c;需要的朋友参考下/*ORACLE中的支持正则表达式的函数主要有下面四个&#xff1a;1&…

在r中rowsums_用R进行数据分析-05

20-矩阵与数组一、矩阵的定义矩阵&#xff08;Matrix&#xff09;是一个按照长方阵列排列的复数或实数集。向量是一维的&#xff0c;而矩阵是二维的&#xff0c;需要有行和列。R中&#xff0c;矩阵是有维数的向量&#xff0c;但元素必须拥有相同的模式&#xff0c;此和向量一致…

python字典和集合对象可以进行索引操作_Python中的字典跟集合整理笔记

泛映射类型映射类型&#xff1a;不仅仅是dict&#xff0c;标准库里的所有映射类型都是利用dict来实现的&#xff0c;因此它们有个共同的限制&#xff0c;即只有可散列的数据类型才能用做这些映射的键。(只有键有这个需求&#xff0c;值并不需要必须是可散列的数据类型。)什么是…

JAVA入门级教学之(super的内存示意)

Super的原理&#xff1a; 代表的是当前对象this的父类型特征 如果类加载过程中&#xff0c;这个类有静态代码块&#xff0c;有静态变量&#xff0c;一律都会执行&#xff0c;系统会先分配空间 只要方法调用&#xff0c;就一定会进行方法压栈 new一个方法&#xff0c;其实是调用…

python博客项目评论_Python 爬虫入门——小项目实战(自动私信博客园某篇博客下的评论人,随机发送一条笑话,完整代码在博文最后)...

之前写的都是针对爬虫过程中遇到问题的解决方案&#xff0c;没怎么涉及到实际案例。这次&#xff0c;就以博客园为主题&#xff0c;写一个自动私信博客下的评论人员(在本篇留下的评论的同学也会被自动私信&#xff0c;如果不想被私信&#xff0c;同时又有问题&#xff0c;请私信…

JAVA入门级教学之(猜数字测试)

一个类A有一个实例变量v&#xff0c;从键盘接受一个正整数作为实例变量v的初始值 另外再定义一个类B&#xff0c;对类A的实例变量v进行猜测 如果大了则提示大了 如果小了则提示小了 等于则提示测试成功 猜测数字比大小的测试&#xff1a; /*** author LBJ* version V1.0* P…

硬盘突然提示没有初始化_新硬盘的分区

★前言如果你添加了一个新硬盘到电脑上&#xff0c;但是它没有在文件管理器中出现&#xff0c;你可能需要为它分配一个盘符&#xff0c;或者对它进行初始化并分区才能使用。★警告在分区时&#xff0c;”删除磁盘分区“和”格式化“都会清空该分区的数据&#xff0c;请提前备份…

正高职称 程序员_正高级工程师评审条件最新版

.精选范本正高级工程师评审条件申报条件&#xff1a;学历资历条件具有大学本科以上学历&#xff0c;取得高级工程师资格后&#xff0c;从事本专业工作满5年。外语、计算机、继续教育条件(一)按照规定参加国家统一组织的职称外语和计算机应用能力考试&#xff0c;取得合格证&…

JAVA入门级教学之(简单的程序测试)

请定义一个交通工具(Vehicle)类 其中有属性&#xff1a; 速度speed 体积size 方法移动move() 设置速度setSpeed(int speed) 加速speedUp() 减速speedDown() 最后在测试类Vehicle中的main() 中实例化一个交通工具对象&#xff0c;并通过方法给它初始化speed&#xff0c…

linux怎样判断线程是否暂停_怎样判断股市是否会继续下跌?

之前和大家分享了如何判断大市是否会上涨&#xff0c;这篇文章我再分享下如何判断大市是否会继续下跌。我们对大市的判断原则仍采用&#xff1a;基于技术分析判断危险信号&#xff0c;结合市场消息坐实。基于上一篇文章的基础如何判断股市是否会上涨&#xff1f;是否已跌到底&a…

hfss螺旋平面_利用HFSS设计平面等角螺旋天线

- 73 -利用HFSS设计平面等角螺旋天线杜起飞北京理工大学电子工程系 100081摘要&#xff1a;本文介绍了一种双臂平面等角螺旋天线的设计过程&#xff0c;利用ANSOFT HFSS对其结构进行了建模和仿真&#xff0c;工作频率为0.4GHz&#xff5e;3GHz&#xff0c;电压驻波比VSWR<2.…

JAVA进阶教学之(源码及API文档概述)

1.JDK类库的根类&#xff1a;Object 这个从老祖宗类中的方法我们需要先研究一下&#xff0c;因为这些方法都是所有子类通用的。 任何一个类默认继承Object 就算没有直接继承&#xff0c;也会间接继承 2.Object类中有哪些常用的方法呢&#xff1f; 第一种&#xff1a;去源代码中…

达梦数据库删除用户_达梦数据库的操作手册.docx

达梦数据库操作手册2013年12月15日达梦数据库安装服务器安装数据库安装注意问题数据库的安装路径不要直接放在操作系统的/目录相同的磁盘上&#xff0c;可以安装在/dmdb/dm&#xff0c;但是/dmdb要单独挂载在一块硬盘上。根据业务需要及数据量&#xff0c;数据文件放在磁盘空间…

Java俄罗斯方块

游戏规则 由小方块组成的不同形状的板块陆续从屏幕上方落下来&#xff0c;玩家通过调整板块的位置和方向&#xff0c;使它们在屏幕底部拼出完整的一条或几条。这些完整的横条会随即消失&#xff0c;给新落下来的板块腾出空间&#xff0c;与此同时&#xff0c;玩家得到分数奖励…

html鼠标悬停效果_【开发小技巧】023—如何使用HTML和CSS实现3D文字效果

来源 | https://www.geeksforgeeks.org/create-a-3d-text-effect-using-html-and-css/3D文字效果是网页设计领域中最常用的文字效果之一。作为设计师或前端开发人员&#xff0c;应该知道如何创建3D文字效果。今天&#xff0c;我们将研究一种最简单易用的方法来实现3D文字外观。…

JAVA进阶教学之(Object类的toString方法)

1.toString public String toString() 返回对象的字符串表示形式。总的来说&#xff0c;这 toString方法返回一个字符串&#xff0c;“以文本方式表示”这个对象。其结果应该是一个简洁&#xff0c;但详实的代表性&#xff0c;是一个容易阅读的人。 建议所有子类都重写此方法…

etcd nginx 容器_Etcd+Confd实现Nginx配置文件自动管理

一、需求我们使用Nginx做七层负载均衡&#xff0c;后端是Tomcat。项目采用灰度发布方式&#xff0c;每次项目升级&#xff0c;都要手动先从Nginx下摘掉一组&#xff0c;然后再升级这组&#xff0c;当项目快速迭代时&#xff0c;手动做这些操作显然会增加部署时间&#xff0c;于…