spring分布式事务学习笔记(2)
此文已由作者夏昀授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
Model类如下:package com.xy.model
1 package com.xy.model;
2
3 /**
4 * Created by helloworld on 2015/1/30.
5 */
6 public class NameQa {
7 private long id;
8 private String nameQa;
9
10 public long getId() {
11 return id;
12 }
13
14 public void setId(long id) {
15 this.id = id;
16 }
17
18 public String getNameQa() {
19 return nameQa;
20 }
21
22 public void setNameQa(String nameQa) {
23 this.nameQa = nameQa;
24 }
25 }
1 package com.xy.model;
2
3 /**
4 * Created by helloworld on 2015/1/30.
5 */
6 public class NameDev {
7 private long id;
8 private String nameDev;
9
10 public long getId() {
11 return id;
12 }
13
14 public void setId(long id) {
15 this.id = id;
16 }
17
18 public String getNameDev() {
19 return nameDev;
20 }
21
22 public void setNameDev(String nameDev) {
23 this.nameDev = nameDev;
24 }
25 }
qa数据源的mybatis mapper接口 package com.xy.dao
1 package com.xy.dao;
2
3 import com.xy.model.NameQa;
4
5 /**
6 * Created by helloworld on 2015/1/30.
7 */
8 public interface NameQaMapper {
9 int insert(NameQa nameQa);
10 }
dev数据源的mybatis mapper接口 package com.xy.devdao
1 package com.xy.daodev;
2
3 import com.xy.model.NameDev;
4
5 /**
6 * Created by helloworld on 2015/1/30.
7 */
8 public interface NameDevMapper {
9 int insert(NameDev nameDev);
10 }
处理事务的service
1 package com.xy.service;
2
3 import com.xy.dao.NameQaMapper;
4 import com.xy.daodev.NameDevMapper;
5 import com.xy.model.NameDev;
6 import com.xy.model.NameQa;
7 import org.springframework.beans.factory.annotation.Autowired;
8 import org.springframework.stereotype.Service;
9 import org.springframework.transaction.annotation.Transactional;10
11 /**
12 * Created by helloworld on 2015/1/30.
13 */
14 @Service
15 public class NameService {
16 @Autowired
17 NameQaMapper nameQaMapper;
18 @Autowired
19 NameDevMapper nameDevMapper;
20
21 @Transactional(rollbackFor = Exception.class)
22 public void addQaAndDev(boolean hasException) throws Exception {
23 NameQa nameQa = new NameQa();
24 nameQa.setNameQa("qa");
25 nameQaMapper.insert(nameQa);
26
27 NameDev nameDev = new NameDev();
28 nameDev.setNameDev("dev");
29 nameDevMapper.insert(nameDev);
30
31 if(hasException) {
32 throw new Exception();
33 }
34 }
35
36
37 }
controller代码
1 package com.xy.controller;
2
3 import com.xy.service.NameService;
4 import org.springframework.beans.factory.annotation.Autowired;
5 import org.springframework.stereotype.Controller;
6 import org.springframework.ui.ModelMap;
7 import org.springframework.web.bind.annotation.RequestMapping;
8 import org.springframework.web.bind.annotation.RequestMethod;
9 import org.springframework.web.bind.annotation.RequestParam;
10
11 /**
12 * Created by helloworld on 2014/11/22.
13 */
14 @Controller
15 public class mybatisController {
16
17 @Autowired
18 NameService nameService;
19
20 @RequestMapping(value = "/addName", method = RequestMethod.POST)
21 ModelMap addName(@RequestParam("hasException") boolean hasException) {
22 try {
23 nameService.addQaAndDev(hasException);
24 } catch (Exception e) {
25 e.printStackTrace();
26 return new ModelMap("false");
27 }
28 return new ModelMap("true");
29 }
30
31
32 }
将项目打成war包,命名为mybatis.war部署在tomcat上。
测试:
request parameters: hasException=false
返回:true 数据添加成功
request parameters: hasException=true
返回:false 两个数据库数据都未添加
网易云免费体验馆,0成本体验20+款云产品!
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 在一台服务器上搭建相对高可用HiveServer实践
【推荐】 接口测试之Kotlin篇(下)
【推荐】 测试角度的并发和幂等问题总结
spring分布式事务学习笔记(2)的更多相关文章
- spring分布式事务学习笔记
最近项目中使用了分布式事务,本文及接下来两篇文章总结一下在项目中学到的知识. 分布式事务对性能有一定的影响,所以不是最佳的解决方案,能通过设计避免最好尽量避免. 分布式事务(Distributed t ...
- spring分布式事务学习笔记(1)
此文已由作者夏昀授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 分布式事务对性能有一定的影响,所以不是最佳的解决方案,能通过设计避免最好尽量避免. 分布式事务(Distrib ...
- Spring 源码学习笔记11——Spring事务
Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...
- Spring 源码学习笔记10——Spring AOP
Spring 源码学习笔记10--Spring AOP 参考书籍<Spring技术内幕>Spring AOP的实现章节 书有点老,但是里面一些概念还是总结比较到位 源码基于Spring-a ...
- Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点
Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...
- spring cloud(学习笔记)高可用注册中心(Eureka)的实现(二)
绪论 前几天我用一种方式实现了spring cloud的高可用,达到两个注册中心,详情见spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一),今天我意外发现,注册中心可以无限 ...
- Spring分布式事务实现概览
分布式事务,一直是实现分布式系统过程中最大的挑战.在只有单个数据源的单服务系统当中,只要这个数据源支持事务,例如大部分关系型数据库,和一些MQ服务,如activeMQ等,我们就可以很容易的实现事务. ...
- Spring分布式事务
[如何实现XA式.非XA式Spring分布式事务] [http://www.importnew.com/15812.html] 在JavaWorld大会上,来自SpringSource的David S ...
- Mysql事务学习笔记
Mysql事务学习笔记 1.事务概述 事务是数据库的执行单元,它包含了一条或多条sql语句,进行的操作是要么全部执行,要么全部都不执行. 2.事务执行命令 语法格式: start transactio ...
随机推荐
- BZOJ3170:[TJOI2013]松鼠聚会
题目传送门:https://lydsy.com/JudgeOnline/problem.php?id=3170 通过分析可以发现,题目所说的两点之间的距离就是切比雪夫距离. 两点之间欧几里得距离:\( ...
- live555源码分析----RSTPServer创建过程分析
最近五一回家,终于有机会能安静的看一下流媒体这方面相关的知识,准备分析live555的源码,接下来会把我读源码的过程记录成博客,以供其他的同路人参考. 因为再读源码的过程中,并不是一路顺着读下来,往往 ...
- JDK 8 - JVM 对类的初始化探讨
在<深入理解 Java 虚拟机>(第二版,周志明著)中,作者介绍了 JVM 必须初始化类(或接口)的五种情况,但是是针对 JDK 7 而言的. 那么,在 JDK 8 中,这几种情况有没有变 ...
- 机器学习:偏差方差权衡(Bias Variance Trade off)
一.什么是偏差和方差 偏差(Bias):结果偏离目标位置: 方差(Variance):数据的分布状态,数据分布越集中方差越低,越分散方差越高: 在机器学习中,实际要训练模型用来解决一个问题,问题本身可 ...
- [Angularjs-学习笔记]工具篇
因为一开始学习前端知识一直都是在慕课网,所以这次准备学习下angularjs等了好久,终于慕课网出了angularjs的内容,于是准备开始跟着老师的步骤进行学习. 大漠老师关于开发工具的内容讲得比较快 ...
- PostgreSQL 日常数据库维护工作
日常数据库维护工作定期备份,定期”清理“数据库,周期性的日志文件管理check_postgres可用于检测数据库的健康并报告异常情况 1. 日常清理 PostgreSQL数据库要求周期性的清理维护.对 ...
- 一张图看懂------left join;right join;inner join
- django的settings.py设置session
############ # SESSIONS # ############ SESSION_CACHE_ALIAS = 'default' # Cache to store session data ...
- java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和总结
在web开发中,避免不了对日期的操作,就几种常见的日期操作做个总结(部分参考网络,在此表示感谢): java.util.Date.java.sql.Date.java.sql.Time.java.sq ...
- 【Android 多媒体应用】使用 MediaPlayer 播放视频
1.MainActivity.java import android.media.AudioManager; import android.media.MediaPlayer; import andr ...