摘要:準(zhǔn)備階段以上一篇文章的代碼為例子,即整合,上一篇文章是基于注解來實(shí)現(xiàn)的數(shù)據(jù)訪問層,這篇文章基于的來實(shí)現(xiàn),并開啟聲明式事務(wù)。創(chuàng)建實(shí)體類數(shù)據(jù)訪問層接口層用戶減塊用戶加塊,聲明事務(wù),并設(shè)計(jì)一個(gè)轉(zhuǎn)賬方法,用戶減塊,用戶加塊。
springboot開啟事務(wù)很簡單,只需要一個(gè)注解@Transactional 就可以了。因?yàn)樵趕pringboot中已經(jīng)默認(rèn)對(duì)jpa、jdbc、mybatis開啟了事事務(wù),引入它們依賴的時(shí)候,事物就默認(rèn)開啟。當(dāng)然,如果你需要用其他的orm,比如beatlsql,就需要自己配置相關(guān)的事物管理器。
準(zhǔn)備階段以上一篇文章的代碼為例子,即springboot整合mybatis,上一篇文章是基于注解來實(shí)現(xiàn)mybatis的數(shù)據(jù)訪問層,這篇文章基于xml的來實(shí)現(xiàn),并開啟聲明式事務(wù)。
環(huán)境依賴在pom文件中引入mybatis啟動(dòng)依賴:
org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.0
引入mysql 依賴:
初始化數(shù)據(jù)庫腳本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");配置數(shù)據(jù)源
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來指明和數(shù)據(jù)庫映射的實(shí)體的所在包。
經(jīng)過以上步驟,springboot就可以通過mybatis訪問數(shù)據(jù)庫來。
創(chuàng)建實(shí)體類public class Account { private int id ; private String name ; private double money; getter.. setter.. }數(shù)據(jù)訪問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,聲明事務(wù),并設(shè)計(jì)一個(gè)轉(zhuǎn)賬方法,用戶1減10塊,用戶2加10塊。在用戶1減10 ,之后,拋出異常,即用戶2加10塊錢不能執(zhí)行,當(dāng)加注解@Transactional之后,兩個(gè)人的錢都沒有增減。當(dāng)不加@Transactional,用戶1減了10,用戶2沒有增加,即沒有操作用戶2 的數(shù)據(jù)??梢夽Transactional注解開啟了事物。
結(jié)語
springboot 開啟事物很簡單,只需要加一行注解就可以了,前提你用的是jdbctemplate, jpa, mybatis,這種常見的orm。
源碼下載:https://github.com/forezp/Spr...
參考資料managing-transactions
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70382.html
摘要:但是鑒于國內(nèi)市場(chǎng)環(huán)境而言,掌握無異于是佳的選擇,低學(xué)習(xí)成本和動(dòng)態(tài)解耦的特點(diǎn)使得更容易被人們所接受。 SpringBoot 是為了簡化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動(dòng)裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴就可以輕易的搭建出一個(gè) WEB 工程 MyBatis 是一款優(yōu)秀的持久層框架,它支持...
摘要:前言如題,今天介紹的聲明式事務(wù)。提供一個(gè)注解在配置類上來開啟聲明式事務(wù)的支持。而在配置里還開啟了對(duì)聲明式事務(wù)的支持,代碼如下所以在中,無須顯式開啟使用注解。源碼下載后語以上為聲明式事務(wù)的教程。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問題。 前言 如題,今天介紹 SpringBoot 的 聲明式事務(wù)。 Spring 的事務(wù)機(jī)制 所有的數(shù)據(jù)訪問技術(shù)都有事務(wù)處...
摘要:為例能夠上傳文件在服務(wù)器,你需要在中加入標(biāo)簽做相關(guān)的配置,但在工程中,它已經(jīng)為你自動(dòng)做了,所以不需要你做任何的配置。每個(gè)方法通過或者注解表明自己的方法。 這篇文章主要介紹,如何在springboot工程作為服務(wù)器,去接收通過http 上傳的multi-file的文件。 構(gòu)建工程 為例創(chuàng)建一個(gè)springmvc工程你需要spring-boot-starter-thymeleaf和 spr...
閱讀 5257·2021-09-22 15:50
閱讀 1862·2021-09-02 15:15
閱讀 1164·2019-08-29 12:49
閱讀 2543·2019-08-26 13:31
閱讀 3458·2019-08-26 12:09
閱讀 1210·2019-08-23 18:17
閱讀 2736·2019-08-23 17:56
閱讀 2929·2019-08-23 16:02