JDBC事务
在 JDBC 中我们可以通过手动方式将事务的提交改为手动方式,通过 setAutoCommit()方法就可以调整。
通过 JDK 文档,我们找到该方法如下:
setAutoCommit()
void setAutoCommit(boolean autoCommit) throws SQLException
将此连接的自动提交模式设置为给定状态,如果连接处于自动提交模式下,则它的所有SQL语句将集中到事务中,直到调用commit方法或rollback方法为止。默认情况下,新连接处于自动提交模式。
提交发生在语句完成时,语句完成的时间取决于SQL语句的类型:
- 对于DML语句(比如Insert,Update或delete)和DDL语句,语句在执行完毕时完成
- 对于Select语句,语句在关联结果集关闭时完成。
- 对于CallableStatement对象或者返回多个结果的语句,语句在所有关联结果集关闭并且已获得所有更新计数和输出参数时完成。
注:如果在事务和自动提交模式更改期间调用此方法,则提交该事务。如果调用setAutoCommit而自动提交模式未更改,则该调用无操作(no-pop)
参数:
autoCommit:
- true表示启动自动提交模式
- false表示关闭自动提交模式
那么我们的 Mybatis 框架因为是对 JDBC 的封装,所以 Mybatis 框架的事务控制方式,本身也是用 JDBC 的setAutoCommit()方法来设置事务提交方式的。
MyBatis中的事务提交方式
Mybatis 中事务的提交方式,本质上就是调用 JDBC 的 setAutoCommit()来实现事务控制。
@Test
public void testSaveUser() throws Exception {
User user = new User();
user<