mybatis运行原理总结

首先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,是个接口,查下看实现类
在这里插入图片描述
进入DefaultSqlSessionFactory
在这里插入图片描述
在这里插入图片描述

查看Transaction 接口类
在这里插入图片描述
进入JdbcTransaction类
在这里插入图片描述
该类的大概功能是:负责获取连接、设置是否进行自动提交作用
查看该类的方法
在这里插入图片描述

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

DefaultSqlSession的更新方法,调用了Executor的uptate方法
在这里插入图片描述
Executo

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_32281025/article/details/85090919