0.准备一个核心配置文件 和 一个mapper文件
1.准备好mybatis的基本环境之后,运行下面的单元测试
2.进入SqlSessionFactoryBuilder().build方法
3.创建 XMLConfigBuilder ,用于解析mabatis的核心配置文件,进入parse(),然后parseConfiguration(),里面为解析xml对应的信息
4. 我们重点来看看mapper节点的解析,这里循环一个个解析mapper文件
5.进入parse()方法,开始解析mapper文件。先判断是否已经解析过
6.进入configurationElement(),看如何解析mapper文件的。
7.重点来看看如何解析sql的。创建 XMLStatementBuilder 对象,用于接续sql语句
8.获取节点上的信息
9.进入 langDriver.createSqlSource ,看如何解析sql的。把sql语句交给 XMLScriptBuilder对象,进入builder.parseScriptNode() ,
这时,看见两个熟悉的符号,“#{”和“}”
10.进入 parser.parse(originalSql) 开始解析,传入原始sql
解析{}里面的内容,hander对象是上一步new的对象,
11.SqlSourceBuilder解析{}里面的内容
解析出来了之后放ParameterExpression ,他继承了hashmap
11.最后得到结果,完了返回一个“?”
sql解析完了。参数拿到了,sql的参数被替换成了?
12.解析完了之后,拿到namespace + 标签id 作为key,放入 configuration 里面的 mappedStatements 容器中。
13. 至此,一个mapper文件里面的节点就解析完毕了。循环里面将继续解析其他的mapper文件
14. mapper文件里面的东西解析完了之后开始注册mapper接口