Mybatis底层原理分析以及源码阅读

费话不多少先上图,我只喜欢画图分析,看图片:

有两个问题:
问题1: 我们一直在写Mapper/DAO只写了接口,没有写具体的实现吧?

【是的】

问题2: 没有写实现类就没办法实例化执行后续的操作,那么又怎么去访问了数据库,并且拿到了数据呢?

虽说我们没有亲自去写实现类,但是mybatis通过动态字节码技术,也就是动态代理帮我们去生成了代理实现类,比如:我们在UserMapper.java
接口里写了一个insertUser(String username, String passwd, Date
birthday),动态代理会根据这个接口生成具体的实现类,也就是代理了UserMapper.java这个接口,解析参数,然后通过调用SqlSession.select()方法,传入相应的参数,然后由SqlSession去执行后续的操作,比如:调用Executor、StatementHandler等一系列操作。

请先生/公主看源码:

在这里插入图片描述
在这里插入图片描述

注:远程一切的RPC几乎也都是通过代理去实现方法的调用,调用其实就是跨虚拟机同步参数、方法状态的,并不是把另一个虚拟机的方法拿回本地调用哦,还是基于动态代理实现的。

jdk的动态代理大家一定要提前弄清楚,里面源码里面有涉及,程序员使用mybatis就是面向接口的编程,我们在使用时也都是调用接口xxxMapper.java,然后通过唯一namespace匹配到唯一xxxMapper.xml,然后交由mybatis的核心组件执行后续的操作。】
在这里插入图片描述
一条SQL的执行流程是不是很清晰了,还不够清晰的话看看下面的执行链路图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
跟踪链路如下:
在这里插入图片描述

大家在看源码的时候可以从SqlSession入手跟踪,注意Configuration、MappedStatement、StatementHandler之间相互引用的关系,你中有我,我中有你的类与类之间的关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Matlab的各种图像滤波Filter算法(代码开源)

前言:本文为手把手教学 Matlab 平台下的各种图像滤波算法的教程,将编程代码与图像滤波知识相联系,以实战为例!博客中图像滤波算法包含:均值滤波、中值滤波、高斯滤波、双边滤波、引导滤波。图像滤波算法是计算机视觉领…

【Spring】AOP原来如此

AOP概述 什么是AOP的技术? 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程AOP是一种编程范式,隶属于软工范畴,指导开发者如何组织程序结构AOP最早由AOP联盟的组织提出的,制定了一套…

摩尔线程S80对于软件的支持

摩尔线程对软件的支持 时间:2024年1月1日 显卡型号:MTT S80 主板型号:七彩虹 igame z590 火神 V20 CPU: intel core i5 10400f 内存: 海盗船3600 16*2 存储: 致态1Tb nvme 显卡的驱动是最新的。 游戏 S…

C/C++ 函数重载

函数多态是C在C语言的基础新增的功能。默认参数能够使用不同数目的参数调用同一个函数,而函数多态(函数重载)让您能够使用多个同名的函数。术语“多态”指的是有多种形式,因此函数多态允许函数可以有多种形式。类似地,术语“函数重载”指的是…

华为云创新中心,引领浙南的数字化腾飞

编辑:阿冒 设计:沐由 县域经济是我国国民经济的重要组成部分,是推动经济社会全面发展的核心力量之一。在推进中国式现代化的征程中,县域经济扮演的角色也越来越重要。 毫无疑问,县域经济的良性发展,需要多方…

数据的确权、流通、入表与监管研究(一):数据与确权(下)

关注WX公众号: commindtech77, 获得数据资产相关白皮书下载地址 1. 回复关键字:数据资源入表白皮书 下载 《2023数据资源入表白皮书》 2. 回复关键字:光大银行 下载 光大银行-《商业银行数据资产会计核算研究报告》 3. 回复关键字…

【NLP论文】02 TF-IDF 关键词权值计算

之前写了一篇关于关键词词库构建的文章,没想到反响还不错,最近有空把接下来的两篇补完,也继续使用物流关键词词库举例,本篇文章承接关键词词库构建并以其为基础,将计算各关键词的 TF-IDF 权值,TF-IDF 权值主…

软件工程PPT 笔记摘录(2)

分析软件需求 UML 提供了用例图来分析和描述用例视角的软件需求模型 UML 提供了交互图和状态图来描述行为视角的软件需求模型 UML 提供了类图来描述和分析业务领域的概念模型 顺序图:强调消息传递的时间序 通信图:突出对象间的合作 类图&#xff0…

掌握C++11标准库(STL):理解STL的核心概念

深入探索C11标准库STL:新特性和优化技巧 一、前言二、容器简介三、迭代器简介四、map与unordered_map(红黑树VS哈希表)4.1、map和unordered_map的差别4.2、优缺点以及适用处4.3、小结 五、总结 一、前言 STL定义了强大的、基于模板的、可复用…

python设计模式:模板方法模式

更多Python学习内容:ipengtao.com 软件设计和编程中,设计模式是一种有助于解决常见问题的强大工具。其中之一是"模板方法模式",它是一种行为型设计模式,允许你定义一个算法的骨架,但将一些步骤的具体实现延迟…

win11 电脑睡眠功能失效了如何修复 win11 禁止鼠标唤醒

1、win11睡眠不管用怎么办,win11电脑睡眠功能失效了如何修复 在win11系统中拥有许多令人激动的新功能和改进,有些用户在使用win11电脑时可能会遇到一个问题:睡眠模式不起作用。当他们尝试将计算机置于睡眠状态时,却发现系统无法进…

HarmonyOS应用程序包快速修复

快速修复概述 快速修复是HarmonyOS系统提供给开发者的一种技术手段,支持开发者以远快于应用升级的方式对应用程序包进行缺陷修复。和全量应用升级软件版本相比,快速修复的主要优势在小、快和用户体验好。在较短的时间内不中断正在运行的应用的情况下&am…

SpringBoot + Vue 抖音全平台项目

简介 本项目是一个短视频平台,拥有热度排行榜,热门视频,兴趣推送,关注推送,内容审核等功能。 源码下载 网盘 (访问密码: 8418) 登录/注册 首页 创作中心 架构设计 上传视频业务流程 视频推送流程 1.用户订阅分类后…

聚类:聚类的介绍及k-means算法

聚类:聚类的介绍及k-means算法 什么是聚类 聚类就是在输入为多个数据时,将“相似”的数据分为一组的操作。1 个组就叫作 1 个 “簇”。下面的示例中每个点都代表1 个数据,在平面上位置较为相近、被圈起来的点就代表一 类相似的数据。也就是…

如何为开源项目和社区做贡献 -- 你应该知道的十件事(一)

1. 前言 大家好,我叫颜国进,现为英特尔边缘计算创新大使、百度飞桨开发者专家。回溯至2021年12月,那时的我,身为机械专业研一新生,仅在C和Python编程语言上有些许基础,对于深度学习的殿堂还只敢在门口窥探&…

【动态规划】【字符串】C++算法:正则表达式匹配

作者推荐 视频算法专题 涉及知识点 动态规划 字符串 LeetCode10:正则表达式匹配 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ’ 匹配零个或多个前面的那一个元素 所谓匹配,是…

web网站的工作流程和开发模式

web网站的工作流程和开发模式 基于Java Script封装的高级技术:Vue、Element、Nginx(前端程序部署的服务器) 初识Web前端 Web标准

Conv2Former:一种transformer风格的卷积特征提取方式

一、前言 昨天读到了一篇有意思的文章,文章提出通过利用卷积调制操作来简化self-attention。还证明了这种简单的方法可以更好地利用卷积层中嵌套的大核(≥7 7)。我们都知道ViTs推动了设计识别模型的发展,近几年使用的也相当的多,通常就是CN…

《ORANGE’S:一个操作系统的实现》读书笔记(十九)输入输出系统(一)

我们刚刚实现了简单的进程,你现在可能很想把它做得更加完善,比如进一步改进调度算法、增加通信机制等。但是这些工作不但做起来没有尽头,而且有些也是难以实现的,因为进程必须与I/O、内存管理等其它模块一起工作。而且&#xff0c…

Linux系统---进程程序替换

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、进程程序替换 一、替换原理 用fork 创建子进程后执行的是和父进程相同的程序 ( 但有可能执行不同的代码分支 ), 子进程往往要…