这篇文章主要是关于mybatis的源码阅读的几个核心概念的介绍。
-
mybatis的核心逻辑在于All-In-Configuration,所有配置的解析最终都会保存在Configuration当中。
-
针对mapper.xml的配置文件的解析,整个解析可以按照官网的文档了解大概逻辑,没有必要细究。
-
Configuration的核心变量MapperProxyFactory,负责保存mapper配置文件的namespace即Dao的Interface类和对应的MapperProxyFactory。
-
Configuration的核心变量mappedStatements,负责保存mapper配置文件的namespace+SQL语句的id和对应的SQL语句的mappedStatement。
-
MapperProxyFactory的作用在于针对DAO层接口生成Mapper的动态代理Proxy,意味着DAO有对应的Proxy,针对Dao的方法的调用都是会走到mapperProxy。
-
针对Mybatis的使用过程可以为四步骤:1、解析mapper.xml并生成SqlSessionFactory对象;2、通过SqlSessionFactory对象返回sqlSession对象;3、通过sqlSession对象获取对应的Dao的代理mapperProxy;4、通过mapperProxy对象执行SQL语句。
-
针对mapperProxy的执行过程,mapperProxy本身是Dao的interface的代理,在执行代理方法的时会创建MapperMethod对象,所有的执行由MapperMethod去执行。
-
MapperMethod核心对象为SqlCommand,SqlCommand的核心作用就是根据代理的interface和执行的method从mappedStatements当中找到mappedStatement,打通了Dao和xml配置之间的联系。
-
MapperMethod的核心逻辑在于通过SqlSession去执行对应的SQL语句,前提是获取了mappedStatement。
-
SqlSession的执行过程实际是由CachingExecutor/SimpleExecutor等执行器去真正执行,而执行的整个上下文当中都包含mappedStatement,后续和DB交互的本质上都由JDBC的接口实现的。
网友评论