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,是个接口,查下看实现类
mybatis运行原理总结_第1张图片
进入DefaultSqlSessionFactory
在这里插入图片描述
mybatis运行原理总结_第2张图片

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

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

DefaultSqlSession的更新方法,调用了Executor的uptate方法
mybatis运行原理总结_第6张图片
Executo

mybatis运行原理总结_第7张图片
mybatis运行原理总结_第8张图片
mybatis运行原理总结_第9张图片
mybatis运行原理总结_第10张图片
mybatis运行原理总结_第11张图片
mybatis运行原理总结_第12张图片

你可能感兴趣的:(ssm)