mybatis的源码流程图
mybatis 的执行流程如下:
1.首先通过 Java API 或者 XML 配置完成初始化,最终所有的配置都在 Configuration 类中维护;
2.然后通过 SqlSessionFactory 得到 SqlSession,这里 SqlSession 就是 mybatis 的顶层 API 了,主要通过他完成数据库的增删改查等操作;
3.然后 SqlSession 将具体的操作委托给 Executor 执行,Executor 就是 mybatis 的调度核心了,主要职责有 SQL 语句生成、一二级缓存维护和事务的相关操作;
4.然后 Executor 将数据库相关的操作委托给 StatementHandler,StatementHandler 中完成了 mybatis 最核心的工作,包括参数绑定,指定 SQL 语句,结果集映射等;
下面是源码流程
1
-
先调Resources的getResourceAsStream方法,传入mybatis-config.xml文件
-
然后调用getResuorceAsStream(ClassLoader loader,String resource)方法
-
这个方法里面再调用classLoaderWrapper中的getResourceAsStream(String resource, ClassLoader classLoader)方法
-
方法里面再调用了本类中的getResourceAsStream(String resource, ClassLoader[ ] classLoader)方法
– 1.创建SqlSessionFactoryBuilder对象
– 2.调用本类带三个参数的重载的build(InputStream inputStream, String environment, Properties properties)方法。
–3通过Xpath解析的方式去解析mybatis-config.xml 文件将配置文件的信息解析并保存在Configuration对象中
–1先调用openSession()方法。
–2再调用openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit)方法
–3创建事务,通过environment构建出transactionFactory事务工厂
–4newExecutor(),根据Executor在全局配置中的类型,创建出对应的执行器
–5通过Executor、事务自动提交以及配置文件对象(Configuration)返回 DefaultSqlSession对象
4.获取mapper