首页 > 其他分享 >Spring事务学习

Spring事务学习

时间:2023-04-16 12:36:23浏览次数:32  
标签:status 事务 Spring update 学习 accountbalance Connection transactionManager

spring将事务管理的逻辑和数据访问的逻辑分开管理,但是每一个数据访问dao都需要同一个Connection对象,这时,spring会在事务开始的时候将connection设置到一个ThreadLocal中,在dao中,就从这个ThreadLocal中拿到Connection。

  /**
   * 声明式事务demo
   */
  public void tranfer() {
      DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
      TransactionStatus status = transactionManager.getTransaction(definition); //设置Connection

      try {
          String sql = "update tx_account set accountbalance = accountbalance - 20 where userid = 1";
          //内部会获取Connection	
          //Connection con = DataSourceUtils.getConnection(obtainDataSource());
          int update = jdbcTemplate.update(sql); 	

          System.out.println(update);

          String sql2 = "update tx_account set accountbalance = accountbalance + 20 where userid = 2";
          int update2 = jdbcTemplate.update(sql2);
          System.out.println(update2);
          //throw new RuntimeException();

      } catch (Exception e){
          transactionManager.rollback(status);
      }
      transactionManager.commit(status);
  }

标签:status,事务,Spring,update,学习,accountbalance,Connection,transactionManager
From: https://www.cnblogs.com/wxmin2/p/17323043.html

相关文章

  • Vue2.0 学习 第三组 条件语句
    本笔记主要参考菜鸟教程和官方文档编写。1.v-if在div或者之类的dom中使用v-if可以控制是否插入该dom,控制由v-if的true和false决定。如:<divid="app"><divv-if="test"></div></div><script>newVue({el:"#app",data:{test:true}})</script>2.v-show......
  • 9、数据库学习规划:Oracle - 学习规划系列文章
          甲骨文公司的Oracle数据库是笔者认为的目前市面上性能最强大的数据库。其版本也发展到了现在的12c,提供的功能也更加的强大了。以前笔者使用的是9i,十几年过去了,也才发展到12代,说明Oracle数据库的性能和底层技术是非常完善和强大的了。 1、简介;Oracle公司......
  • 10、数据库学习规划:MySQL - 学习规划系列文章
          MySQL数据库是笔者认识的几个流行的数据库之一。类似于Linux重装系统,其也是开源的,最主要是有很多的社区支持,众多的开发者对其能够进行使用,所以其功能也挺强大,便于使用。通过对MySQL数据库的学习,笔者认为其是现今贡献最大和使用最广泛的数据库。因为其有社区版,能够免......
  • 最小生成树学习笔记
    定义最小生成树是指给定一个带权连通图G,如果里面有一个子图G'中的边权和加起来最小并且使得所有的点都能两两相通。性质从上述的定义可以看出,最小生成树有以下性质:如果图G中有n个点的话,G'中的边数为n-1且G'中不含有环。最小生成树可能是一个,也可能是多个。......
  • 【Spring Cloud】SpringBoot、Spring Cloud、Spring Cloud Alibaba版本对应
    官方通告SpringBoot1.5.x及以下版本官方不再提供维护了,建议开发者选择使用SpringBoot2.0.x以上的版本,相对应的SpringCloud版本也最好不要使用。简单的查看版本信息:https://start.spring.io/actuator/infoSpringCloud对应的SpringBoot版本访问SpringCloud官网:https://spring......
  • 李宏毅机器学习——pytorch
    什么是pytorchpython机器学习框架,Facebook提出,主要有一下两个特点使用GPU加速高维矩阵的运算torch.cuda.is_available()x=x.to('cuda')可以很方便的实现梯度的计算requires_grad=True指定需要对变量x计算梯度z是x的函数,调用z.backward()反向传播计算梯度x.grad属性......
  • Mathematica学习笔记002-数据导入导出
    如果不能把数据导入导出,Mathematica就只能是个大号计算器了。学会了导入导出,一方面可以把数据、图像结果保存,另一方面也可以将别的程序的中间结果导出成(txt或xls格式),然后交给Mathematica处理,让骑完成高精度计算和绘图。基本操作其实很简单Export["D:\\abc.txt",{{1,2},{3,4......
  • 微信小程序开发(学习记录1.0)
    首先,把遇到的问题贴出来,主要是这个解决问题的思路,供大家参考。现在的问题是将下面的导航栏做出来,但是在自己做的时候遇到的问题在app.json文件中输入tarBar,就会生成模板代码,默认会生成一个list的模板代码,几个list就是下面的导航栏有几部分,我们想要分成三部分,所以我们就会有三个lis......
  • dockerfile的使用,使用dockerfile部署springboot项目
    文章目录一、dockerfile概述1、dockerfile基础2、Docker执行Dockerfile的大致流程3、镜像、容器、dockerfile的关系二、dockerfile常用保留字1、FROM2、MAINTAINER与LABEL3、RUN4、EXPOSE5、WORKDIR6、USER7、ENV8、ADD9、COPY10、VOLUME11、CMD12、ENTRYPOINT三、使用dockerfile构......
  • python学习之http客户端和服务端
    Part1前言python非常简洁,非常适合写小功能以及测试接口。本文主要记录用pyhon实现一个简单的http客户端和服务端。Part2http客户端这里采用request库来实现。示例如下importrequestsimportjsonurl='http://127.0.0.1:81/test?key1=123&key2=456'headers={'Authoriza......