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 上半年度的有奖问…

Python input 语法:深入解析与高效运用

Python input 语法:深入解析与高效运用 Python中的input函数是获取用户输入的关键工具,其语法简洁却功能强大。然而,对于初学者来说,input的语法及其背后的机制可能会显得有些复杂和困惑。本文将从四个方面、五个方面、六个方面和…

【java11】java11新特性介绍

Java11于2018年9月25日正式发布,Java11是继Java8之后的第一个LTS(Long-Term-Support)长期支持功能版本,与之前的版本(Java9和Java10)不同,它提供了长达3年的维护期,旨在提供稳定且长…

AIGC和ChatGPT有什么区别?

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

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

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

【JS】JavaScript编程语言-数据类型 日期和时间(2024-06-04)

内建对象:日期(Date)。该对象存储日期和时间,并提供了日期/时间的管理方法。 我们可以使用它来存储创建/修改时间,测量时间,或者仅用来打印当前时间。 1、创建 调用 new Date() 来创建一个新的 Date 对象…

微信小程序使用echarts

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

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

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

NotImplementedError: cannot instantiate ‘PosixPath‘ on your system报错解决

问题描述 NotImplementedError: cannot instantiate PosixPath on your systemThe above exception was the direct cause of the following exception: 解决 在代码的最前面加上 import pathlib temp pathlib.PosixPath pathlib.PosixPath pathlib.WindowsPath 如果是Lin…

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

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

mp公共字段自动注入

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

AI技术的未来展望

随着科技的不断革新,0417photo.cn人工智能(AI)技术正逐步从科幻走向现实,成为推动社会进步和经济发展的重要力量。在这篇文章中,我们将探讨AI技术的当前发展态势、面临的挑战以及未来可能带来的变革。 一、AI技术的当…

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

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

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

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

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

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

OnlyOffice DocumentServer 8.0.1编译破解版本(¥100)

OnlyOffice DocumentServer 8.0.1编译破解版本(¥100) 破解20人数限制 更换中文字体 修改源码,根据业务自定义服务 根据源码在本机启动项目,便于开发 将编译好的服务打包docker镜像运行 提供各种docker镜像包&…

2024年BCSP-X小学低年级组初赛真题

BCSP-X小低组基础知识测评 一、单项选择题(共15题,每题2分,共计30分) 一般用哪种软件来编写C++的代码: A. 编译器 B. 编辑器 C. 调试器 D. 浏览器下面哪个是编写一个 C++程序不可缺少的内容: A. 变量 B. main 雨数(程序人口) C. 输人语句 D. 输出语句出租车的计费规则是:当行驶…

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

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

Delphi

Delphi,是美国 Borland(宝兰)公司於 1995 年开发在 Windows 平台下的快速应用程式开发工具 (Rapid Application Development,简称 RAD),它的前身是在 DOS 下的产品 Borland Turbo Pascal。(非开源软件&…

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

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