MyBatis核心对象

MyBatis核心类对象主要有俩个:

1:对相关配置文件信息进行封装的Configuration对象

2:用来执行数据库操作的Executor对象。

核心对象----存储类对象Configuration

Configuration对象主要有三个作用:

1:封装MyBatis配置文件内容(XPathParser(MyBatis基于XPath封装的xml解析工具类)进行xml文件解析):

2:封装Mapper文件相关内容:

MappedStatement对象:

MyBatis解析Mapper.xml配置文件映射成MappedStatement对象,每一个id标签对应一个MappedStatement。

MappedStatement部分源码:

MappedStatement使用BoundSql封装sql语句:

3:创建其它相关对象:

StatementHandler:

MyBatis进行数据库操作的真正核心,封装了JDBC的statement。

既然StatementHandler负责数据库操作,那么为什么还要封装Executor对象?

因为StatementHandler只是将Executor最主要的功能:增删改查等基本功能,而Executor还有其它作用

ParmeterHandler

封装对参数的处理操作

ResultSetHandler

封装对结果集的处理操作

TypeHandler

负责数据库类型和Java之间对应的类型转换

Configuration对象创建时机:

创建SqlSessionFactory时通过XPathParser解析xml配置文件,进而创建Configuration,通过Configuration作为参数创建SqlSessionFactory。

核心对象-----操作类对象Executor

核心实现类:

MyBatis默认使用SimpleExecuter。

Executor的最终还是通过调用Configuration创建的各种Handler实现其功能。

Executor的创建时机

通过SqlSessionFactory创建SqlSession时创建Executor:

总结:

        我们在创建SqlSessionFactory时通过xml文件解析技术将Mybatis配置文件映射成Configuration对象,将Mapper.xml文件映射成MappedStatement配置文件同时封装进Configuration对象。同时Configuration对象创建StatementHandler等底层操作工具类。

        通过SqlSessionFactory创建SqlSession时创建出Executor操作类,Executor通过StatementHandler等对象完成具体的数据库操作和事务,缓存等功能。

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

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

相关文章

Pulsar 社区周报 | No.2024-05-30 | BIGO 百页小册《Apache Pulsar 调优指南》

“ 各位热爱 Pulsar 的小伙伴们,Pulsar 社区周报更新啦!这里将记录 Pulsar 社区每周的重要更新,每周发布。 ” BIGO 百页小册《Apache Pulsar 调优指南》 Hi,Apache Pulsar 社区的小伙伴们,社区 2024 上半年度的有奖问…

AIGC和ChatGPT有什么区别?

AIGC和ChatGPT有什么区别? 首先先解释一下它们各自的概念 什么是AIGC AIGC,全称为Artificial Intelligence Generated Content,中文译为人工智能生成内容。这是一种利用人工智能技术自动生成内容的生产方式。例如,它可以创作出各种形式的内…

基于PHP+MySQL组合开发的同城便民小程序源码系统 房产出租+求职招聘+相亲交友 带完整的安装代码包以及搭建教程

系统概述 在当今信息化高速发展的时代,同城便民小程序已成为城市居民日常生活中不可或缺的一部分。为了满足广大用户的需求,小编给大家分享一款基于PHPMySQL组合开发的同城便民小程序源码系统。该系统集房产出租、求职招聘、相亲交友等多功能于一体&…

微信小程序使用echarts

思路 五个tab公用一个柱状图组件切换tab以及切换时间改变数据,传入子组件,子组件监听数据重新更新点击柱状图显示具体数值每个时间点有两个柱子(高压和低压),柱状图显示高压的最大值到最小值的范围除了血压其余只有一…

Python采集数据处理:利用Pandas进行组排序和筛选

概述 在现代数据处理和分析中,网络爬虫技术变得越来越重要。通过网络爬虫,我们可以自动化地从网页上收集大量的数据。然而,如何高效地处理和筛选这些数据是一个关键问题。本文将介绍如何使用Python的Pandas库对采集到的数据进行组排序和筛选…

基于SpringBoot+Vue研究生志愿填报辅助系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…

mp公共字段自动注入

目录 一 什么是公共字段自动注入 二 使用mp实现公共字段自动注入 1.实现步骤 ①导入mp相关依赖 ② 在实体类上给相关字段加上 TableField()注解 ③自定义元数据对象处理器 2.实现原理 一 什么是公共字段自动注入 我们平时在执行更新或者是插入数据功能的时候,…

智绘“水蓝图”,宏电亮相第4届中国(山东)水利科技与生态建设博览会

5月23-25日,第4届中国(山东)水利科技与生态建设博览会在济南黄河国际会展中心成功召开。展会以“人水和谐,生态山东”为主题,围绕智慧水利建设、水环境治理、水生态保护等领域,展示当下水利行业的新技术、新…

红酒:如何正确地储存红酒

云仓酒庄雷盛红酒,以其优良的品质和丰富的口感,深受广大消费者的喜爱。然而,要想让这些美酒能够长时间保持良好的状态,正确的储存方式是必不可少的。下面,云仓酒庄雷盛红酒将为您详细介绍如何正确地储存红酒。 一、合适…

C语言笔记23 •文件操作•

1.为什么要使用文件? 文件,顾名思义就是存储我们所写在电脑上的文本内容。如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序&#x…

AI工具:如何通过智能助手简化工作流程?

工欲善其事,必先利其器。 随着AI技术与各个行业或细分场景的深度融合,日常工作可使用的AI工具呈现出井喷式发展的趋势,AI工具的类别也从最初的AI文本生成、AI绘画工具,逐渐扩展到AI思维导图工具、AI流程图工具、AI生成PPT工具、AI…

【二叉树】Leetcode 103. 二叉树的锯齿形层序遍历【中等】

二叉树的锯齿形层序遍历 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1: 输入:roo…

Kimichat使用案例007:用kimichat批量重命名txt文本文件

文章目录 一、介绍二、txt文件集三、Kimi操作内容四、Kimi输出内容一、介绍 一个文件夹中有很多个txt文本文件,需要全部进行重命名。 二、txt文件集 三、Kimi操作内容 可以在kimichat中输入提示词: 你是一个Python编程专家,要完成一个关于批量重命名txt文本文件的Python脚本…

产品经理的需求善变,利用规则引擎减少80%的需求变更成本

经常有技术团队的小伙伴抱怨最烦的就是产品经理发起需求变更,才做了三周,改了八回需求...... 其实这个故事,每天都在开发团队中上演,作为 IT的 leader 来透视这个问题,要辩证的看待,其实80% 的可能性都是如…

《对马岛之魂:导演剪辑版》新鲜出炉,AOC电竞显示器与你并肩作战!

超越PS版本的画面表现,AOC U27G3XM助你轻松拉满游戏体验! 近日,《对马岛之魂:导演剪辑版》正式登陆PC平台。这款备受期待的作品不仅在战斗机制和故事内容上进行了创新,还引入了更高级的图形选项和更丰富的自定义设置。…

Android 绑定服务的5个问题。

1.android studio 目录结构改变了。为什么会报R 资源文件找不到。 在写项目的时候经常需要改到。 gradle文件里的域名名字要改变下。 2.Caused by: android.app.BackgroundServiceStartNotAllowedException: Not allowed to start service Intent { cmpcom.zjtzsw.sbkDevice/…

oracle 数字或者小数格式化

select trim(. from to_char(1,fm9999990.9999)),trim(. from to_char(0.1,fm9999990.9999)) from dual

视觉SLAM十四讲:从理论到实践(Chapter8:视觉里程计2)

前言 学习笔记,仅供学习,不做商用,如有侵权,联系我删除即可 一、目标 1.理解光流法跟踪特征点的原理。 2.理解直接法是如何估计相机位姿的。 3.实现多层直接法的计算。 特征点法存在缺陷: 二、光流(Optical Flow) …

【Qt知识】Qt中的对象树是什么?

在深入Qt编程的世界时,你会频繁遇到一个核心概念——对象树(Object Tree)。这个概念是Qt框架管理内存、处理事件和组织用户界面元素的基础。 什么是Qt对象树? 如果你的Qt应用程序就像一片茂盛的森林,而这片森林中的每…

C++学习笔记(22)——多态

目录 [TOC](目录) 比喻与理解1. 多态的概念2. 多态的定义及实现2.1多态的构成条件2.2 虚函数2.3虚函数的重写2.3.1 虚函数重写的两个例外:1. 协变(基类与派生类虚函数返回值类型不同)2. 析构函数的重写(基类与派生类析构函数的名字不同) 2.4 C11 override 和 final2…