实现mybatis事务回滚的方法

  介绍

今天就跟大家聊聊有关实现mybatis事务回滚的方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

解决方法:

将数据源配置改为自动提交(false)

将康涅狄格州设置setAutoCommit(假),用康涅狄格州进行提交,回滚操作

例子:

SqlSession  session =, sqlSessionFactory.openSession(假);   Connection 才能;conn =, session.getConnection ();   conn.setAutoCommit才能(假);   try {才能   ,,UserMapper  mapper =, session.getMapper (UserMapper.class);   ,,for  (String  name :名称),{   ,,,,//各种操作   ,,,User  User =, new 用户();   ,,,user.setName(名称);   ,,,//插入,需要回滚   ,,,mapper.insert(用户);   ,,}   ,,conn.commit ();   ,,},catch  (Exception  e), {   ,,//有重复回滚   ,,conn.rollback ();   ,,throw  e;   ,,},{finally    ,,session.close ();   以前,,}

<强>补充:弹簧引导+ Mybatis +手动触发事务回滚

使用第一种方法(省略了操作数据库的代码)操作Mybatis +的事务,若出现异常进入捕捉之后,不会执行数据库操作的回滚,反而会报没有事务aspect-managed TransactionStatus范围的错误,修改为第二种可以正常进行事务管理和回滚

<强>看到一个关于此情况的解释:

@ transactional必须触发aop代理才能生效,故非公开方法,不执行事务,公开方法在本类中被引用,也不执行事务

第一种方法:

@PostMapping (“/save1")   public  boolean  action01 (), {   ,return  action00 (),,   }   ,   @PostMapping (“/save2")   public  boolean  action02 (), {   ,return  action00 (),,   }   ,   @ transactional   private  boolean  action00 (), {   ,String  result =,真的;   ,try  {   System.out.println才能(1/0);   ,}catch  (Exception  e), {   .setRollbackOnly TransactionAspectSupport.currentTransactionStatus才能()();   时间=result 才能;假;   ,}   ,return 结果;   }

第二种方法:

@PostMapping (“/save1")   @ transactional   public  boolean  action01 (), {   ,boolean  result =, action00 ();   ,if (!结果){   .setRollbackOnly TransactionAspectSupport.currentTransactionStatus才能()();   ,}   ,return 结果;   }   ,   @PostMapping (“/save2")   @ transactional   public  boolean  action02 (), {   ,boolean  result =, action00 ();   ,if (!结果){   .setRollbackOnly TransactionAspectSupport.currentTransactionStatus才能()();   ,}   ,return 结果;   },   ,   private  boolean  action00 (), {   ,String  result =,真的;   ,try  {   System.out.println才能(1/0);   ,}catch  (Exception  e), {   时间=result 才能;假;   ,}   ,return 结果;   }

看完上述内容,你们对实现mybatis事务回滚的方法有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

实现mybatis事务回滚的方法