最近想深入学习一下mybatis,想通过看mybatis的源码,了解mybatis的整个工作流程,熟悉mybatis的各种细节。
使用mybatis的方式不同,sqlSessionFactory的创建方法也不同,具体可以看SqlSessionFactoryBuilder的源代码,里面有很多重载的build方法。本文是在SpringBoot环境下,基于mapper接口使用mybatis,在启动项目中的某个时间点会调用SqlSessionFactoryBuilder中的如下方法创建SqlSessionFactory:
public SqlSessionFactory build(Configuration config) {
return new DefaultSqlSessionFactory(config);
}
这个方法需要一个Configuration类型的参数,所以需要先创建Configuration对象,虽然不同的build方法实现有不同,但是核心都是解析mybatis.xml配置文件和mapper.xml的配置文件。
创建完sqlSessionFactory后,在具体执行增删改查的时候,还需要创建sqlSession
在使用mapper接口增删改查的方式中,sqlSession的创建是在执行增删改查的过程中,在sqlSession的代理方法中创建的。
如下:sqlSessionTemplate会调用sqlSessionProxy的一个代理方法