1. 程式人生 > >mybatis執行原理總結

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

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述