该系列文章针对 Mybatis 3.5.1 版本
Mybatis 中 <mappers>
标签解析,主要是为了得到两大部分数据
1、Mapper.class 接口
2、SQL 执行语句,结果集映射关系等数据
在上一章中提到了 Mapper.class 文件的解析,Mapper.class 是接口文件,该接口是发起SQl执行调用的 API 入口,所有相关的操作都在其代理类 MapperProxy
中完成。
在上一章中忽略了 Mapper.class
文件中 @Select
等 SQL 语句注解的解析,本次章节将和 xml 中的 sql 解析一起分析。
<mapper>
标签解析入口
来回顾一下,XMLConfigBuilder
解析时序简图,如下:
在时序图中 <mappers>
加载解析在 XMLConfigBuilder#mapperElement
中完成,相关解析代码如下:
如上述代码,针对 <mappers>
子标签的解析分为两种:扫包批量解析和单个文件解析。
而无论是扫包批量解析亦或者单个文件解析,都会对 xml 文件 和 class 文件进行解析处理。
上一章以单个文件解析为入口分析 Mapper.class
文件的加载。
并提到了单个文件 <mapper>
标签配置的三种属性:
- resource
- url
- class
这三种属性的配置都会尝试解析 xml 中的数据和 Mapper.class 上的 @Select
等注解,而 resource 和 url 所配置的