MyBatis詳細執行流程
mybatis詳細執行流程
一、通過Resource去載入全局配置文件
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MyBatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
二、實例化sqlSessionFactoryBuilder構造器
三、通過build中XmlConfigBuilder類去解析文件流以及環境和屬性
四、 將配置資訊存放到Configuration中
五、然後實例化SqlSessionFactory實現類DefaultSqlSessionFactory
此時進入底層實現流程
六、由TransactionFactory 創建一個Transaction事務對象
七、創建執行器Excutor,去執行mapper
八、 創建SqlSession介面實現類DefaultSqlSession
SqlSession sqlSession = MybatisUtils.getSqlSession()
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
九、 實現CURD
十、判斷是否執行成功,若沒有則回滾到事務提交器
十一、 事務提交
sqlSession.commit();
十二、 關閉
sqlSession.close();
後序
努力去看源碼,加以理解分析
並且熟練使用DeBug模式來調試程式,以及查看程式碼底層是如何實現的。