mybatis 源码总结

这篇文章主要是关于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的接口实现的。


欢迎阅读

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。