博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring分布式事务学习笔记(2)
阅读量:6894 次
发布时间:2019-06-27

本文共 3665 字,大约阅读时间需要 12 分钟。

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

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

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 @Service15 public class NameService {16     @Autowired17     NameQaMapper nameQaMapper;18     @Autowired19     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 @Controller15 public class mybatisController {16 17     @Autowired18     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+款云产品!

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

相关文章:

【推荐】

转载地址:http://yfkdl.baihongyu.com/

你可能感兴趣的文章
pyspark底层浅析
查看>>
【设计模式】组合模式之神经网络应用
查看>>
Jenkins系统搭建及常见操作
查看>>
SQL Server 2012自动异地备份
查看>>
Ubuntu 下 SVN 多版本库的搭建
查看>>
CSS选择器
查看>>
PHP遍历接口Iterator详解
查看>>
一款简单到极致的 React 数据流框架——Refast
查看>>
ribbon的ServerListRefreshInterval
查看>>
Android我还可以相信你多少系列文章二之音视频播放
查看>>
使用Brotli提高网站访问速度
查看>>
Python3安装Pymongo
查看>>
OS层面删除数据文件后的恢复方式(LINUX):
查看>>
用FileZilla搭建FTP服务器及相关问题
查看>>
http状态吗307,303,302的区别
查看>>
(译)Scrum和XP的不同
查看>>
Vue 2 | Part 5 列表渲染和事件监听
查看>>
Redux概念之四: reducer(归纳函数)与纯函数
查看>>
页面加载事件--DOMContentLoaded
查看>>
Vue2 + Nodejs + WebSocket 完成你画我猜多人在线游戏
查看>>