zoukankan      html  css  js  c++  java
  • 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:

  • 相关阅读:
    Servlet程序开发-- 过滤器
    English--Computer System
    Servlet程序开发--实例操作:MVC设计模式应用
    Servlet程序开发--WEB开发模式(Mode I, Mode II)
    在服务器上搭建git仓库
    git 搭建本地仓库
    smartcrop.js 内容感知图像裁剪
    js函数 eql,equal,equalp
    nodejs XML和json互相转换
    js 创建XML
  • 原文地址:https://www.cnblogs.com/dalianpai/p/14154993.html
Copyright © 2011-2022 走看看