大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说mybatis 3_mybatis源码分析,希望能够帮助大家进步!!!
最近在网上看了mybatis的源码直播,记录、复习一下当时的内容!!
阅读源码需要从三个方向来剖析:
1.宏观:分析这个框架具备哪些功能
2.微观:阅读源码
3.图解:根据源码画出UML图
阅读源码的方式:
1.跟着代码debug进入源码
2.带着问题来看源码
前期准备
1.引入包
2.准备配置文件
3.配置解析demo
4.业务查询demo
=====================================================================
1.mybatis解析配置是怎样的流程
=====================================================================
假如前期准备完成,现在执行mybatis的demo,第二步是为了拿到文件流,我们直接看第三步并进入mybatis源码
其中new XMLConfigBuilder(reader, environment, properties)只是为了解析xml文件的,
拿到这个对象后,在parser.parse()进行解析XML中的内容
这段代码就是去解析了xml配置的内容,并最终存储在configuration类中
:这里没有详细说,具体看源码,configuration在XMLConfigBuilder类中
解析完数据源等配置后,返回build处,继续看代码
到此,mybatis已经拥有了所有的配置信息【db , sql】
=====================================================================
2.mybait执行(XML)业务查询的流程是怎样
=====================================================================
当sqlSessionFactory对象初始化完成后,我们需要从它的openSession方法获取到sqlSession对象:
configuration中的ExecutorType默认是simple
这里面也是初始化一些内容,这些后面再详细探讨,并在最后返回了DefaultSqlSession(sqlSession)对象
继续往下看这个查询,查看session.selectOne的执行流程
这个是抽象方法,需要子类实现,也就是SimpleExecutor
getFirstResultSet(stmt)的源码如下
=====================================================================
2.mybait是怎样解析
=====================================================================
持续更新中...