高清图片下载地址:https://www.jinmingyz.com/software/file/download?id=e3df695276d04203b53476bbe3ceda03
Mybatis大致流程图:
1. SqlSessionFactoryBean
1)初始化准备工作,加载配置文件,注入Mapper映射器等
2)Config、MapperXML
2. SqlSessionFactory 或 SqlSessionTemplate
1)DefaultSqlSessionFactory单例,创建SqlSession的工厂
3. SqlSession
1)会话,操作请求
4. Excutor
1)执行者,执行sql
5. MapperStatement
1)sql语句获取
6. SqlSource
1)sql处理
2)子类
ProviderSqlSource
StaticSqlSource
DynamicSqlSource
RawSqlSource
7. BoundSql
1)存放sql语句参数等
8. ParameterHandler
1)参数绑定映射绑定
2)子类:DefaultParameterHandler
9. ResultSetHandler
1)返回数据数据映射绑定
2)子类:DefaultResultSetHandler
在基础的 MyBatis 用法中,是通过 SqlSessionFactoryBuilder 来创建 SqlSessionFactory 的。
需要注意的是 SqlSessionFactoryBean 实现了 Spring 的 FactoryBean 接口。
这意味着由 Spring 最终创建的 bean 并不是 SqlSessionFactoryBean 本身,而是工厂类(SqlSessionFactoryBean)的 getObject() 方法的返回结果。
这种情况下,Spring 将会在应用启动时为你创建 SqlSessionFactory,并使用 sqlSessionFactory 这个名字存储起来。
@Bean
public SqlSessionFactory sqlSessionFactory() {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
return factoryBean.getObject();//这一句
}