首先jdbc是如何操作事务的?
是通过连接进行设置,默认是自动提交

try{
     con.setAutoCommit(false);//开启事务
     ......
     con.commit();//try的最后提交事务      
} catch() {
    con.rollback();//回滚事务
}

mybatis使用的session是如何进行操作连接操作事务的
每个sqlsession是一个数据库会话,sqlsession是线程不安全的,多线程访问同一sqlsession对象会出现线程安全问题。
mybatis源码解析

            InputStream inputStream = null;
            inputStream = Resources.getResourceAsStream("mybatis.xml");
            SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession =sqlSessionFactory.openSession();
            courseDaoMapper = sqlSession.getMapper(CourseDaoMapper.class);

分析SqlsessionFactory,是个接口,查下看实现类
mybatis运行原理总结
进入DefaultSqlSessionFactory
mybatis运行原理总结
mybatis运行原理总结

查看Transaction 接口类
mybatis运行原理总结
进入JdbcTransaction类
mybatis运行原理总结
该类的大概功能是:负责获取连接、设置是否进行自动提交作用
查看该类的方法
mybatis运行原理总结

关于增删改的操作,获取connection是在执行sqlsession的增删改操作的时候才打开连接

DefaultSqlSession的更新方法,调用了Executor的uptate方法
mybatis运行原理总结
Executo

mybatis运行原理总结
mybatis运行原理总结
mybatis运行原理总结
mybatis运行原理总结
mybatis运行原理总结
mybatis运行原理总结

相关文章:

  • 2021-10-05
  • 2021-09-08
  • 2021-11-28
  • 2021-05-17
  • 2021-08-27
  • 2021-07-15
  • 2021-08-13
  • 2021-05-18
猜你喜欢
  • 2021-11-29
  • 2021-10-01
  • 2021-09-24
  • 2022-12-23
相关资源
相似解决方案