• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > springboot开启声明式事务的方法

springboot开启声明式事务的方法

作者:方志朋 字体:[增加 减小] 来源:互联网 时间:2017-05-28

方志朋 通过本文主要向大家介绍了springboot 分布式,springboot是什么,springboot教程,springboot mybatis,springboot视频等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

springboot开启事务很简单,只需要一个注解@Transactional 就可以了。因为在springboot中已经默认对jpa、jdbc、mybatis开启了事事务,引入它们依赖的时候,事物就默认开启。当然,如果你需要用其他的orm,比如beatlsql,就需要自己配置相关的事物管理器。

准备阶段

以上一篇文章的代码为例子,即springboot整合mybatis,上一篇文章是基于注解来实现mybatis的数据访问层,这篇文章基于xml的来实现,并开启声明式事务。

环境依赖

在pom文件中引入mybatis启动依赖:

<dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.0</version>
</dependency>
</div>

引入MySQL 依赖

<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.29</version>
    </dependency>
</div>

初始化数据库脚本

-- create table `account`
# DROP TABLE `account` IF EXISTS
CREATE TABLE `account` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(20) NOT NULL,
 `money` double DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `account` VALUES ('1', 'aaa', '1000');
INSERT INTO `account` VALUES ('2', 'bbb', '1000');
INSERT INTO `account` VALUES ('3', 'ccc', '1000');
</div>

配置数据源

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath*:mybatis/*Mapper.xml
mybatis.type-aliases-package=com.forezp.entity
</div>

通过配置mybatis.mapper-locations来指明mapper的xml文件存放位置,我是放在resources/mybatis文件下的。mybatis.type-aliases-package来指明和数据库映射的实体的所在包。

经过以上步骤,springboot就可以通过mybatis访问数据库来。

创建实体类

public class Account {
  private int id ;
  private String name ;
  private double money;

  getter..
  setter..

 }
</div>

数据访问dao 层

接口:

public interface AccountMapper2 {
  int update( @Param("money") double money, @Param("id") int id);
}
</div>

mapper:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.forezp.dao.AccountMapper2">


  <update id="update">
    UPDATE account set money=#{money} WHERE id=#{id}
  </update>
</mapper>
</div>

service层

@Service
public class AccountService2 {

  @Autowired
  AccountMapper2 accountMapper2;

  @Transactional
  public void transfer() throws RuntimeException{
    accountMapper2.update(90,1);//用户1减10块 用户2加10块
    int i=1/0;
    accountMapper2.update(110,2);
  }
}
</div>

@Transactional,声明事务,并设计一个转账方法,用户1减10块,用户2加10块。在用户1减10 ,之后,抛出异常,即用户2加10块钱不能执行,当加注解@Transactional之后,两个人的钱都没有增减。当不加@Transactional,用户1减了10,用户2没有增加,即没有操作用户2 的数据。可见@Transactional注解开启了事物。

结语

springboot 开启事物很简单,只需要加一行注解就可以了,前提你用的是jdbctemplate, jpa, mybatis,这种常见的orm。

源码下载:https://github.com/forezp/SpringBootLearning

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • springboot开启声明式事务的方法
  • springboot开启声明式事务的方法

相关文章

  • 2017-05-28spring boot 使用@Async实现异步调用方法
  • 2017-05-28详解前后端分离之Java后端
  • 2017-05-28Java中==运算符与equals方法的区别及intern方法详解
  • 2017-05-28Spring Boot实现邮件注册功能示例代码
  • 2017-05-28Java Annotation详解及实例代码
  • 2017-05-28springboot整合quartz实现定时任务示例
  • 2017-05-28Java缓存池代码实例详解
  • 2017-05-28java 中volatile和lock原理分析
  • 2017-05-28详解Springboot自定义异常处理
  • 2017-05-28Java经典排序算法之二分插入排序详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Spring Boot中Redis数据库的使用实例
    • 浅谈java中的一维数组、二维数组、三维数组、多维数组
    • Spring+SpringMVC+MyBatis深入学习及搭建(一)之MyBatis的基础知识
    • Java 逻辑运算符中&&与&,||与|的区别
    • Java 序列化和反序列化实例详解
    • Java 异常的栈轨迹(Stack Trace)详解及实例代码
    • ObjectInputStream 和 ObjectOutputStream 介绍_动力节点Java学院整理
    • Spring Boot Log4j2的配置使用详解
    • java Spring AOP详解及简单实例
    • Java中IO流 RandomAccessFile类实例详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有