此文已由作者夏昀授权网易云社区发布。
欢迎访问,了解更多网易技术产品运营经验。
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+款云产品!
更多网易技术、产品、运营经验分享请。
相关文章:
【推荐】