最新消息:关注【已取消】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

spring手动事务简单实现

Javaweb admin 0浏览 评论

spring手动事务适合于报除了RuntimeException异常等自定义异常时使用,因为自定义异常如果没有继承RuntimeException运行异常的话,是不会事务回滚的,因此我们可以在返回自定义异常后用上我们的spring手动事务使其回滚数据,使用案例如下,springmvc项目中ServiceImpl实现类中的用法。

public Map<String,Object> getList(){
    Map<String,Object> resultMap = new HashMap<String,Object>();
    xxxService.insert(数据1);
    List<Entity> list = xxxService.selectAll();
    if(list > 0){
       resultMap.put("result","数据已存在");  
    }else{
        xxxService.insert(数据2);
    }
    return resultMap;
}

�resultMap�返回的异常是要让前台用户知道的自己插入数据到数据库时出现了什么问题,但是虽然报了自定义异常给了前台用户,数据1已经被插入mysql数据库了,因为是自定义异常,所以即使你在service层中实现了事务回滚,也是没有办法回滚的,这时我们就需要实现spring手动事务回滚功能,代码如下:

public Map<String,Object> getList(){
    Map<String,Object> resultMap = new HashMap<String,Object>();
    xxxService.insert(数据1);
    List<Entity> list = xxxService.selectAll();
    if(list > 0){
       resultMap.put("result","数据已存在"); 
       TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();  
    }else{
        xxxService.insert(数据2);
    }
    return resultMap;
}

加入这一段代码的意思是:当数据存在时,前面插入的数据也要回滚:

 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

以上这段手动事务的代码是关键。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/javaweb/35.html
"文章很值,打赏犒劳作者一下"
微信号: Javaweb_engineer

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

与本文相关的文章

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)

网友最新评论