缘起

想必经过前面两章的回忆,你已经很清楚了Mybatis和jdbc的用法,下面我们正式进入到Mybatis的源码解析中。
在阅读源码之前,有必要说一下Mybatis的整体运行逻辑,脑中有了一个大概的流程,才不容易迷失在源码的海洋中。

Mybatis的“步骤”

我们把main入口处的代码分为两个部分
【Mybatis源码解析第三章】Mybatis的“逻辑”_数据库

  1. 解析xml的配置文件构建SqlSession对象,
  2. 执行SQL

从代码上看似乎就这么简单,但其实内部会比这个要复杂一点,完整的步骤应该是这样的

  1. 加载配置:配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),然后把这个对象作为value,把mappernamespace+对应节点的id作为key保存到Configuration的mappedStatements属性中,这是个map对象。
  2. SQL解析:当API接口层接收到调用请求时,会接收到传入SQLID和传入对象(可以是Map、JavaBean或者基本数据类型),Mybatis会根据SQLID找到对应的MappedStatement,然后根据传入参数对象对MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。
  3. SQL执行:将最终得到的SQL和参数使用JDBC的方式执行,得到操作数据库的结果。
  4. 结果映射:将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap、JavaBean或者基本数据类型,并将最终结果返回。

那么在下一章中,我们来说说,Mybatis是如何解析配置文件的。