zoukankan      html  css  js  c++  java
  • 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中,已被调用

  • 相关阅读:
    Linux文件系统命令 cd
    Linux文件系统命令 cat
    正则表达式(.+?)与(.+)区别
    Linux文件系统命令 ls
    如何正确认识Docker Kubernetes 和 Apache Mesos
    基于Nutch Solr等基于搭建一体化的数据抓取平台
    ubuntu apache ssl配置
    机器学习入门
    docker 安全性问题
    数据工程师面试必备——Python与数据库的那些事
  • 原文地址:https://www.cnblogs.com/htyj/p/8605504.html
Copyright © 2011-2022 走看看