这里考虑的是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中,已被调用

Mybatis中dao接口和mapper 的加载过程的更多相关文章

  1. mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类

    相信大家在刚开始学习mybatis注解方式,或者spring+mybatis注解方式的时候,一定会有一个疑问,为什么mybatis的dao接口只需要一个接口,不需要实现类,就可以正常使用,笔者最开始的 ...

  2. mybatis 详解(八)------ 懒加载

    本章我们讲如何通过懒加载来提高mybatis的查询效率. 本章所有代码:http://pan.baidu.com/s/1o8p2Drs 密码:trd6 1.需求:查询订单信息,有时候需要关联查出用户信 ...

  3. mybatis的sqlSessionFactory的加载过程

    使用过SSM的框架的都知道mybatis这个持久层框架,今天小编就来简单说说这个框架的核心工厂类sqlSessionFactory的加载过程,一般的SSM框架我们都会在spring的applicati ...

  4. Android中自定义ListView实现上拉加载更多和下拉刷新

    ListView是Android中一个功能强大而且很常用的控件,在很多App中都有ListView的下拉刷新数据和上拉加载更多这个功能.这里我就简单记录一下实现过程. 实现这个功能的方法不止一个,Gi ...

  5. Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...

  6. VC++ 使用WebBrowser控件中html文件以资源形式加载

    . . . . //加载资源文件中的HTML,IDR_HTML1就是HTML文件在资源文件中的ID wchar_t self_path[MAX_PATH] = { }; GetModuleFileNa ...

  7. Ogre中Mesh的加载过程详述

    转自:http://blog.csdn.net/yanonsoftware/article/details/1031891 如果新开始写一个3D渲染引擎,Mesh应该是一个很好的切入点.当一个看似简单 ...

  8. Android中使用WebView, WebChromeClient和WebViewClient加载网页 (能够执行js)

    Android中使用WebView, WebChromeClient和WebViewClient加载网页   在android应用中,有时要加载一个网页,如果能配上一个进度条就更好了,而android ...

  9. HTML5中script的async属性异步加载JS

    HTML5中script的async属性异步加载JS     HTML4.01为script标签定义了5个属性: charset 可选.指定src引入代码的字符集,大多数浏览器忽略该值.defer 可 ...

随机推荐

  1. 【emWin】例程二十七:窗口对象——Listview

    简介: LISTVIEW小工具可在具有多个列的列表中选择某个元素.由于LISTVIEW小工具包含了 一个HEADER小工具,因此可对列加以管理(排序等).所创建的LISTVIEW 既可以无环绕型框架窗 ...

  2. 初试 Kubernetes 集群中使用 Traefik 反向代理

    初试 Kubernetes 集群中使用 Traefik 反向代理 2017年11月17日 09:47:20 哎_小羊_168 阅读数:12308    版权声明:本文为博主原创文章,未经博主允许不得转 ...

  3. 对TextFile格式文件的lzo压缩建立index索引

    转自:http://blog.csdn.net/yangbutao/article/details/8519572 hadoop中可以对文件进行压缩,可以采用gzip.lzo.snappy等压缩算法. ...

  4. 原 TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系

    首先说明:数据报的分段和分片确实发生,分段发生在传输层,分片发生在网络层.但是对于分段来说,这是经常发生在UDP传输层协议上的情况,对于传输层使用TCP协议的通道来说,这种事情很少发生. 1,MTU( ...

  5. plsql常用方法-转

    在SQLPLUS下,实现中-英字符集转换alter session set nls_language='AMERICAN';alter session set nls_language='SIMPLI ...

  6. python 守护进程,监控进程

    守护进程代码: import time, os import subprocess def run(): while True: taskList = os.popen('tasklist').rea ...

  7. Java 正则表达式详细使用

    Java 正则表达式 java.util.regex.Pattern java.util.regex.Matcher 1.Matchmatch 是从字符串最头部开始匹配,一直到结束,需要匹配整个串 S ...

  8. android 软键盘自动弹出和关闭

     一.布局中软键盘自动弹出 bargain_dialog_offer_edit.requestFocus(); bargain_dialog_offer_edit.setFocusable(true) ...

  9. Android Studio开发第三篇版本管理Git

    创建项目在前一篇讲了,这里就讲一下怎么把创建的新项目关联到远程仓库呢. 在as的菜单栏找到VCS/Import into Verson Control/Create Git Repository 弹出 ...

  10. mac环境变量

    环境: 当前已经有 .bash_profile文件了 打开.bash_profile: open -e .bash_proile open -e .bash_profile 查看node安装路径: w ...