MyBatis事务管理与jdbc事务管理代码对照关系

1、jdbc事务管理的代码

        String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "root";
        String password = "password";

        try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) {
            // 1、关闭自动提交,开启事务,如果设为true,关闭事务管理
            connection.setAutoCommit(false);
            
            // 2、执行一系列数据库操作

            // 3、提交事务
            connection.commit();
        } catch (SQLException e) {
            e.printStackTrace();
            // 4、发生异常,回滚事务
            connection.rollback();
        }
            // 5、关闭连接
         if(connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
   

2、MyBatis 事务管理代码

这里配置文件如下:

<configuration>
    <environments default="development">
    	 <!--一个环境对应一个数据库(数据源)对应一个SqlSessionFactory对象-->
    	 <!--一个SqlSessionFactory对象可以建立多个会话对象SqlSession,也就是建立多个连接对象-->
        <environment id="development">
        	<!--事务管理方式有2:如果采用JDBC,则使用JDBC底层事务管理;要么用其他框架的事务管理,为"MANAGED"-->
            <transactionManager type="JDBC"/>
            
            <!--数据源: 为程序提供Connection对象,数据源要实现DataSource接口-->
            <!--采取连接池的方式-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="****"/>
                <property name="poolMaximumActiveConnections" value="3"/>
            </dataSource>
        </environment> 
    </environments>

    <mappers>
        <mapper resource="carMapper.xml"/>  <!--自动从根路径下查找配置文件--> <!--一个表一个mapper-->
        <mapper resource="studentMapper.xml"/>
    </mappers>
</configuration>

mybatis事务管理代码:

SqlSession sqlSession = null;
        try {
            // 1.创建SqlSession对象,执行后获得连接池的连接对象,默认false
            //   默认就是 相当于JDBC 中setAutoCommit(false) 开启事务管理
            sqlSession = SqlSessionUtil.openSession();  
          
            // 2.数据库操作
            int count = sqlSession.insert("insertCar",map);
        
            // 3.提交事务
            sqlSession.commit();
        } catch (Exception e) {
            // 4.回滚事务
            if (sqlSession != null) {
                sqlSession.rollback();
            }
            e.printStackTrace();
        } finally {
            // 5.关闭事务
            if (sqlSession != null) {
                sqlSession.close();
            }
        }

具体对照关系,写在了代码里面,MyBatis采用JDBC事务管理方式时,实际上底层封装JDBC事务管理机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值