Mybatis的原理

说明

1.在第二步的时候用的是建造者模式,其中BaseBuilder抽象类就扮演建造者接口的角色,得到一个XmlConfigBuilder对象。主要用来解析maybatis-config.xml,是主要的人口,先在配置文件中查找configuration节点,然后开始解析各个子节点,这些信息都会保存到Configuration中。

2.在第五步的时候,要解析mapper.xml,会把每个sql解析成MappedStatement,会封装到Configuration的mappedStatements中,它是一个map,key为MappedStatement的id(全类名加上方法名),value为MappedStatement。

3.在解析xml完成以后,会把每个配置文件的命名空间可以绑定一个Mapper接口,并注册到MapperRegistry中,会调用它的addMapper方法填充MapperRegistry.knowMappers集合,集合放的key为Class对象,value为MapperProxyFactory对象。可以为Mapper接口创建代理对象。执行sql的时候,会调用getMapper()方法,获取Mapper的代理对象。
注:其中MapperRegistry的addMapper方法,是在XMLmapperBuilder.bingMapperForNamespace()中调用的,最终都会出现在Configuration中。

电脑拿去修了,这里就贴出雷神课件中的图。





参数的封装:

缓存的key

二级缓存查询,走的是tcm:

一级缓存查询,用的是perpetualCache:

原文地址:https://www.cnblogs.com/dalianpai/p/14154993.html