(1) 默认需要手动提交事务
    Mybatis框架是对 JDBC的封装,所以 Mybatis框架的事务控制方式,本身也是用 JDBCConnection对象的commit(), rollback() .
    Connection 对象的 setAutoCommit()方法来设置事务提交方式的。自动提交和手工提交。

    1. <transactionManager type="JDBC"/>

    该标签用于指定 MyBatis所使用的事务管理器。MyBatis 支持两种事务管理器类型JDBC ****MANAGED

    • JDBC:使用 JDBC的事务管理机制。即,通过 Connectioncommit()方法提交,通过 rollback()方法回滚。但默认情况下,MyBatis 将自动提交功能关闭了,改为了手动提交。即程序中需要显式的对事务进行提交或回滚。从日志的输出信息中可以看到。

    image.jpeg

    • MANAGED:由容器来管理事务的整个生命周期(如 Spring 容器)。

    (2) 自动提交事务设置自动提交的方式,factory 的 openSession() 分为有参数和无参数的。
    image.jpeg

    有参数为 true,使用自动提交,可以修改 MyBatisUtil 的 getSqlSession()方法。

    1. session = factory.openSession(true);

    再执行 insert 操作,无需执行 session.commit(),事务是自动提交的。