根据我们的工厂类来分析整个源码,mybatis的底层就是JDBC,但是我们丝毫看不见他的影子,这其实都是mybatis’帮助我们把他做了


上面这句话就是让mybatis的核心配置文件转换成流的形式inputStream
但其实他与下面这句话的意义差不多
但是这样指定路径是不对的,因为后面的路径需要指定
如果想要他找到,就必须
按文件的读取格式写入

但是我们使用上面的那个,相当于会自动帮我们匹配相对路径下的文件

这个就是使用了工厂的设计模式,工厂的设计模式的好处就是,我们之前创建对象都是用new,但是现在我们都可以交给mybatis去做,我们用的时候,都可以去工厂那边去拿就可以了

然后调用了工厂的build方法,然后把流形式的文件引用过来


再build中的方法中,引用了XMLConfigBuilder,随后把值放进里面

通过底层把各项标签配置一一解析


其实这句话,放在底层中,也就是调用了三个方法,把值传过去,我们也可以这样写


这个是获得session对象

在没有接口的时候编写的是selectOne,selectList,再有接口的时候,直接调用mapper
其底层就是调用了我们调用接口的实现类
在我们通过接口的调用,但我们并没有引用他的实现类对象,这里主要是应用了动态代理

在这串代码中我们可以动态的生成代理对象

那在我们没有写接口的过程中,只是通过session直接调用xml文件内的属性

他的底层的执行流程

他的底层都是这样写的,在我们写selectOne或者selectList标签的时候,他会自动在底层匹配的

另外还需要注意一点,我们做增删改操作,其实后台调用的都是update,我们有时即使标签写错了,但效果仍然执行的原因在这里

另外我们使用selectmap或者是selectone,他们底层调用的都是selectList

mybatis源码分析详解相关推荐

  1. 线程池原理初探以及源码分析(详解)

    1,为什么用线程池 在学java基础的时候,就学过线程的创建方式,如继承Thread类,实现Runnable接口,实现Callable接口这三种,但是在企业级开发中,由于存在多线程以及高并发等现象,如 ...

  2. 源码通透-mybatis源码分析以及整合spring过程

    源码通透-mybatis源码分析以及整合spring过程 mybatis源码分析版本:mybaits3 (3.5.0-SNAPSHOT) mybatis源码下载地址:https://github.co ...

  3. Mybatis源码分析: MapperMethod功能讲解

    canmengqian </div><!--end: blogTitle 博客的标题和副标题 --> <div id="navigator"> ...

  4. Android四大组件之bindService源码实现详解

        Android四大组件之bindService源码实现详解 Android四大组件源码实现详解系列博客目录: Android应用进程创建流程大揭秘 Android四大组件之bindServic ...

  5. mybatis源码分析之事务管理器

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇:mybatis源码分析之Configuration 主要分析了构建SqlSessionFactory的过程中配置文件的 ...

  6. MyBatis 源码分析系列文章合集

    1.简介 我从七月份开始阅读MyBatis源码,并在随后的40天内陆续更新了7篇文章.起初,我只是打算通过博客的形式进行分享.但在写作的过程中,发现要分析的代码太多,以至于文章篇幅特别大.在这7篇文章 ...

  7. MyBatis 源码分析 - 插件机制

    1.简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展.这样的好处是显而易见的,一是增加了框架的灵活性.二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作.以 My ...

  8. MyBatis 源码分析 - 缓存原理

    1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力.作为一个重要的组件,MyBatis 自然 ...

  9. MyBatis 源码分析 - 内置数据源

    1.简介 本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑.搞懂这些数据源的实现,可使大家对数据源有更深入的认识.同时在配置这些数据源时,也会更清楚每种属性的意义和用途.因此,如果大家想知其 ...

  10. MyBatis 源码分析 - SQL 的执行过程

    本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程.该过程本身比较复杂,牵涉到的技术点比较多.包括但不限于 Mapper 接口代理类的生成.接口方法的解析.SQL 语句的解析.运 ...

最新文章

  1. L1-006 连续因子
  2. Python 途虎养车全系车型轮毂--参数分析与实现
  3. Spring AOP 简介以及简单用法
  4. 你不一定懂的cpu显示信息
  5. 什么是.hpp文件?
  6. term date at Cambridge
  7. CVPR 2020 | ActBERT: 自监督多模态视频文字学习
  8. 一本通 1282:最大子矩阵
  9. c语言经典编程案例猜数字,用c语言编程猜数字
  10. python编译器怎么运行不在路径中的py文件_对python当中不在本路径的py文件的引用详解...
  11. Hacker学习发展流程图
  12. C与PHP的联系与区别
  13. ecshop 模板页php,解决ecshop新建页面分页问题
  14. 数据库系统之NoSQL数据库系统
  15. 滑模控制学习笔记(二)
  16. selenium 网址
  17. php oop思想
  18. 万网域名怎么做解析教程图解
  19. 陆涛带着孙飞和汪贺早早的等在这里
  20. if函数多个条件php,excelif函数的多个条件使用方法

热门文章

  1. “互联网+创新2.0”、“工业制造4.0战略”、“工业互联网
  2. 【图像隐写】基于matlab GUI DWT+DCT+SVD数字水印嵌入提取攻击(带面板)【含Matlab源码 1664期】
  3. 【优化算法】Tent映射的混合灰狼优化算法【含Matlab源码 1570期】
  4. 【优化覆盖】基于matlab模因算法求解集群无线传感器网络中节能覆盖控制优化问题【含Matlab源码 1563期】
  5. 【图像提取】基于matlab PCA-CSIFT feature图像特征提取【含Matlab源码 1174期】
  6. 【验证码识别】基于matlab GUI不变矩验证码识别(带面板)【含Matlab源码 095期】
  7. 【车间调度】基于matlab粒子群算法求解车间调度问题【含Matlab源码 013期】
  8. kali linux 桌面消失_Kali安装好后,需要修改的一些常用配置
  9. 例2.7 输出梯形 - 九度教程第14题(排版题)
  10. 东宫初见计算机乐谱,东宫初见简谱歌词 曲风比较微美的抒情曲