摘要:准备阶段以上一篇文章的代码为例子,即整合,上一篇文章是基于注解来实现的数据访问层,这篇文章基于的来实现,并开启声明式事务。创建实体类数据访问层接口层用户减块用户加块,声明事务,并设计一个转账方法,用户减块,用户加块。
springboot开启事务很简单,只需要一个注解@Transactional 就可以了。因为在springboot中已经默认对jpa、jdbc、mybatis开启了事事务,引入它们依赖的时候,事物就默认开启。当然,如果你需要用其他的orm,比如beatlsql,就需要自己配置相关的事物管理器。
准备阶段以上一篇文章的代码为例子,即springboot整合mybatis,上一篇文章是基于注解来实现mybatis的数据访问层,这篇文章基于xml的来实现,并开启声明式事务。
环境依赖在pom文件中引入mybatis启动依赖:
org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.0
引入mysql 依赖:
初始化数据库脚本mysql mysql-connector-java runtime com.alibaba druid 1.0.29
-- 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");配置数据源
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
通过配置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.. }数据访问dao 层
接口:
public interface AccountMapper2 { int update( @Param("money") double money, @Param("id") int id); }
mapper:
service层UPDATE account set money=#{money} WHERE id=#{id}
@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); } }
@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/Spr...
参考资料managing-transactions
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70382.html
摘要:但是鉴于国内市场环境而言,掌握无异于是佳的选择,低学习成本和动态解耦的特点使得更容易被人们所接受。 SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程 MyBatis 是一款优秀的持久层框架,它支持...
摘要:前言如题,今天介绍的声明式事务。提供一个注解在配置类上来开启声明式事务的支持。而在配置里还开启了对声明式事务的支持,代码如下所以在中,无须显式开启使用注解。源码下载后语以上为声明式事务的教程。 微信公众号:一个优秀的废人如有问题或建议,请后台留言,我会尽力解决你的问题。 前言 如题,今天介绍 SpringBoot 的 声明式事务。 Spring 的事务机制 所有的数据访问技术都有事务处...
摘要:为例能够上传文件在服务器,你需要在中加入标签做相关的配置,但在工程中,它已经为你自动做了,所以不需要你做任何的配置。每个方法通过或者注解表明自己的方法。 这篇文章主要介绍,如何在springboot工程作为服务器,去接收通过http 上传的multi-file的文件。 构建工程 为例创建一个springmvc工程你需要spring-boot-starter-thymeleaf和 spr...
阅读 5256·2021-09-22 15:50
阅读 1861·2021-09-02 15:15
阅读 1163·2019-08-29 12:49
阅读 2542·2019-08-26 13:31
阅读 3457·2019-08-26 12:09
阅读 1209·2019-08-23 18:17
阅读 2735·2019-08-23 17:56
阅读 2928·2019-08-23 16:02