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 ...
随机推荐
- nodejs渲染到页面的理解
一般逻辑都是: 打开页面,前端发请求到服务端,服务端返回数据到前端,前端根据数据生成DOM节点,然后append到DOM中. 如果是nodejs渲染到页面,我的理解是: 打开页面,服务端直接把数据查询 ...
- H5移动端下html上传图片被旋转问题
iOS下,html方式使用<input type="file">上传图片,图片会被旋转.遇到这个问题js是无法解决的,html也没有相应的解决方案.只能放到后台去处理, ...
- Mac上制作Centos7系统U盘安装盘
Centos7 下载地址: http://101.110.118.47/isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD- ...
- 一个分类,两个问题之ArrayList
前段时间,在做一个商品的分类,分类有3级,类似于以下这种形式的: ---食物 ---蔬菜 ---白菜 ---材料 ---鸡肉 ....... 而我需要做的是将取得的一个商品的字符串类型的分类ID集,然 ...
- L2-013. 红色警报(dfs)
L2-013. 红色警报 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 战争中保持各个城市间的连通性非常重要.本题要求你编写一 ...
- DCloud:目录
ylbtech-DCloud:目录 1.返回顶部 1.5+ App开发入门指南 http://ask.dcloud.net.cn/article/89 2. 3. 2.返回顶部 3.返回顶部 ...
- AngularJS:实例
ylbtech-AngularJS:实例 1.返回顶部 1. AngularJS 实例 实例 您可以在线编辑实例,然后点击按钮查看结果. AngularJS 实例 <div ng-app=&qu ...
- .net core 环境安装
NET Core开发环境搭建 使用VS2015开发.NET Core项目,环境的搭建可以参考官网,大致安装步骤如下: 1.首先你得装个vs2015 并且保证已经升级至 update3及以上, 2.vs ...
- HDLM命令dlnkmgr详解之一__命令格式
dlnkmgr命令格式 dlnkmgr operation [parameter [parameter-value]] dlnkmgr - The command name. operation - ...
- 如何设置linux在出现kernel panic后自动重启 (ZT)
Automatic reboot after Linux kernel panic http://www.syn-ack.org/centos-linux/automatic-reboot-after ...