• Mybatis中dao接口和mapper 的加载过程


    这里考虑的是mybatis和spring整合的场景

    1.在系统启动的时候,会去执行配置文件中有关扫描mybatis接口的配置:通过MapperScannerConfigurer扫描接口生成spring特定的描述交给MapperProxyFactory管理,可能以后要用它生成代理对象

    2.初始化SqlSessionFactoryBean。

      首先判断mybatis.xml中是否配置了mapper属性,

        如果配置了:

          通过XMLConfigBuilder中的mapperElement()方法解析mapper接口放到configration中;

        如果没有:

          再判断是否配置mapperlocations路径也就是mapper.xml所在的路径

            如果配置了:

              会根据namespace找到接口,然后通过 XMLMapperBuilder中的bindMapperForNamespace()方法添加到configration中

            如果没有配置:

              在需要用到mapper代理时,就会通过包扫描获取mapper信息,解析mapper,然后放到configration中

    3.configration添加mapper接口的过程

        通过mapper Registry 中的addMapper()方法

    4.通过接口信息去加载对应的xml,同时会校验对应xml配置是否正确。通过MapperAnnotationBuilder的parse()去判断xml是否加载,如果没有就调用其中额loadXMLResource()方法就行加载,同时将接口中的方法和sql通过id属性就行关联

    5.最后通过jdk代理生成代理对象存到configration中,已被调用

  • 相关阅读:
    Java使用AES算法
    Python中使用AES算法(解决Python2.x和3.x下运行不兼容问题)
    关于递归
    zabbix文档3.4
    CentOS-7.3.1611编译安装 Nginx-1.12.1+mysql-5.7.19+PHP-7.1.8+zabbix-3.4.1
    搭建zabbix服务器监控
    php编译安装过程中遇到问题
    springboot 获取控制器参数的几种方式
    spring boot 全局异常处理及自定义异常类
    Java 中的异常和处理详解
  • 原文地址:https://www.cnblogs.com/htyj/p/8605504.html
Copyright © 2020-2023  润新知