此文已由作者夏昀授权网易云社区发布。

欢迎访问网易云社区,了解更多网易技术产品运营经验。

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+款云产品!

更多网易技术、产品、运营经验分享请点击。

相关文章:
【推荐】 从海报视觉到网页设计
【推荐】 【你离硅谷只差一步】网易中国创业家大赛项目火热征集中
【推荐】 关于Runtime.getRuntime().exec()产生阻塞的2个陷阱

转载于:https://www.cnblogs.com/zyfd/p/9870097.html

spring分布式事务学习笔记(2)相关推荐

  1. Spring Boot 2 学习笔记(2 / 2)

    Spring Boot 2 学习笔记(1 / 2) - - - 45.web实验-抽取公共页面 46.web实验-遍历数据与页面bug修改 47.视图解析-[源码分析]-视图解析器与视图 48.拦截器 ...

  2. ci mysql 事务_MySQL事务-学习笔记

    MySQL事务-学习笔记 MySQL事务 事务的意义 案例:银行转账过程 A向B转账500,A原来有1000,B有500. 分析: SQL处理过程: A 减少 500 B 增加 500 以上两点必须同 ...

  3. Spring分布式事务实现

    分布式事务是指操作多个数据库之间的事务,spring的org.springframework.transaction.jta.JtaTransactionManager,提供了分布式事务支持.如果使用 ...

  4. spring分布式事务示例_Spring声明式事务示例

    spring分布式事务示例 事务是具有ACID (原子,一致,隔离和持久)属性的工作单元. 原子意味着所有更改都发生或什么都没有发生. 如果从一个帐户借钱并记入另一个帐户,则交易将确保借记和贷项均已完 ...

  5. Spring Boot 框架学习笔记(五)( SpringSecurity安全框架 )

    Spring Boot 框架学习笔记(五) SpringSecurity安全框架 概述 作用 开发示例: 1. 新建项目 2. 引入依赖 3. 编写`SecurityConfig`类,实现认证,授权, ...

  6. Spring Boot 框架学习笔记(二)(配置文件与数据注入 yaml基本语法 JSR303数据验证 多环境切换 )

    Spring Boot 框架学习笔记(二) 六.appliaction.properties配置与数据注入 6.1 `@Value`注解 测试注入数据 读取输入流 6.2 读取配置文件数据注入 单文件 ...

  7. Spring源码学习笔记:起源发展和核心模块主要职能

    1.博客内容均出自于咕泡学院架构师第三期 2.架构师系列内容:架构师学习笔记(持续更新) 1.Spring 的前世今生 早在 2007 年,一个基于 Java语言的开源框架正式发布,取了一个非常有活力 ...

  8. Spring源码学习笔记:经典设计模式之装饰者模式

    1.博客内容均出自于咕泡学院架构师第三期 2.架构师系列内容:架构师学习笔记(持续更新) 0.装饰者模式(Decorator Pattern) 指在不改变原有对象的基础之上,将功能附加到对象上,提供了 ...

  9. Spring源码学习笔记:经典设计模式之代理模式

    1.博客内容均出自于咕泡学院架构师第三期 2.架构师系列内容:架构师学习笔记(持续更新) 0.代理模式(Proxy Pattern) 指为其他对象提供一种代理,以控制对这个对象的访问.代理对象在客户端 ...

最新文章

  1. Codeforces Round #367 (Div. 2)
  2. OpenStack 业务链networking-sfc介绍 (2) - 底层原理
  3. 马斯克的火箭,这次没!爆!炸!
  4. 20145305 《信息安全系统设计基础》第6周学习总结
  5. ubuntu(deepin)安装apache2并支持php7.0
  6. memcached和php关系,php – memcacheD这没关系?
  7. docker push到私有仓库、pull
  8. iOS关于rar解压第三方库Unrar4iOS使用总结
  9. Windows下安装和配置Maven的方法及注意事项
  10. 关于《构建之法》阅读笔记 的致歉博客
  11. mfc gridctrl 设置某列自动伸长_三明桥梁智能张拉设备数控智能张拉系统全自动智能张拉系统...
  12. sql按时间取去重最近_Sqlserver如何单独对某列去重
  13. 2021 年了,TensorFlow 和 PyTorch 两个深度学习框架地位又有什么变化吗?
  14. 全新版本的SoundSource for Mac - 优质的音频控制软件
  15. Openwrt 摄像头使用
  16. OpenCL快速入门教程
  17. linux下的mysql调优_MySQL调优三步曲(慢查询、explain profile)
  18. 贴片钽电容封装及规格和参数资料
  19. 查看pagesize和blocksize以及inodesize
  20. USB有线网卡怎么用

热门文章

  1. python语言精通_Python语言基础从入门到精通
  2. 画出的点做交互_设计之下交互设计原型设计之概念设计
  3. python笔记全_Python笔记
  4. html语言dl与ul,HTML中DL、UL、OL用哪个比较好
  5. android studio smssdk,SMSSDK for Android 配置
  6. java月历组件_vue之手把手教你写日历组件
  7. 如何用c 控制mysql数据库_用C语言操作MySQL数据库
  8. C++ 内存基本构件 placement new
  9. string concat_Java String concat()方法与示例
  10. Java RandomAccessFile writeBytes()方法与示例