您的位置:首页 > 其它

mybatis自动提交事务管理

2017-08-22 16:28 260 查看
关于mybatis的事务的回滚与提交的官方说明如下:

事务控制方法

控制事务作用域有四个方法。 当然, 如果你已经选择了自动提交或你正在使用外部事务管 理器,这就没有任何效果了。然而,如果你正在使用 JDBC 事务管理员,由 Connection 实 例来控制,那么这四个方法就会派上用场:

void commit()

void commit(boolean force)

void rollback()

void rollback(boolean force)

默认情况下 MyBatis 不会自动提交事务, 除非它侦测到有插入, 更新或删除操作改变了 数据库。如果你已经做出了一些改变而没有使用这些方法,那么你可以传递 true 到 commit 和 rollback 方法来保证它会被提交(注意,你不能在自动提交模式下强制 session,或者使用 了外部事务管理器时) 。很多时候你不用调用 rollback(),因为如果你没有调用 commit 时 MyBatis 会替你完成。然而,如果你需要更多对多提交和回滚都可能的 session 的细粒度控 制,你可以使用回滚选择来使它成为可能。

注意MyBatis-Spring和MyBatis-Guice提供了声明事务处理,所以如果你在使用Mybatis的同时使用了Spring或者Guice,那么请参考它们的手册以获取更多的内容。

从官方说明可以看出如果要使用事务回滚,需使用connection来获取连接或者关闭session自动提交才能实现。

使用spring注入的方式,事务管理的方法,运行的debug如下,插入一条语句后断开连接

 

直接使用session的方式如下,没有事务管理,只能手动关闭连接。才会归还连接

 

事务是由spring来管理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息