MyBatis工作原理

在学习MyBatis程序之前,需要了解一下MyBatis工作原理,以便于理解程序。MyBatis的工作原理如下图1)读取MyBatis配置文件:mybatis-config.xml为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,例如数据库连接信息。2)加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在M…

大家好,又见面了,我是你们的朋友全栈君。

在学习 MyBatis 程序之前,需要了解一下 MyBatis 工作原理,以便于理解程序。MyBatis 的工作原理如下图
MyBatis工作原理

1)读取 MyBatis 配置文件:mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。

2)加载映射文件。映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。

3)构造会话工厂:通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。

4)创建会话对象:由会话工厂创建 SqlSession 对象,该对象中包含了执行 SQL 语句的所有方法。

5)Executor 执行器:MyBatis 底层定义了一个 Executor 接口来操作数据库,它将根据 SqlSession 传递的参数动态地生成需要执行的 SQL 语句,同时负责查询缓存的维护。

6)MappedStatement 对象:在 Executor 接口的执行方法中有一个 MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL 语句的 id、参数等信息。

7)输入参数映射:输入参数类型可以是 Map、List 等集合类型,也可以是基本数据类型和 POJO 类型。输入参数映射过程类似于 JDBC 对 preparedStatement 对象设置参数的过程。

8)输出结果映射:输出结果类型可以是 Map、 List 等集合类型,也可以是基本数据类型和 POJO 类型。输出结果映射过程类似于 JDBC 对结果集的解析过程。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125891.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 服务器永恒之蓝病毒解决方法_永恒之蓝病毒作者

    服务器永恒之蓝病毒解决方法_永恒之蓝病毒作者一、NSA“永恒之蓝”勒索蠕虫全球爆发2017年5月12日爆发的WannaCry勒索病毒肆虐了全球网络系统,引起各国企业和机构极大恐慌。而这次受害最严重的是Windows系统,自然也被锁定为怀疑对象,有人认为正是因为该系统对于漏洞的麻木和疏漏才导致了此次勒索病毒的蔓延。作为受害者的微软却将矛头指向美国国安局(NSA)和永恒之蓝。不法分子利用…

    2022年10月16日
    1
  • windows打开远程连接_windows怎么开启远程服务

    windows打开远程连接_windows怎么开启远程服务1.打开dos命令界面使用“Ctrl+R”组合键快速打开cmd窗口,并输入“cmd”命令,打开cmd窗口。2.使用“mysql-uroot-proot”命令可以连接到本地的mysql服务。3.使用“usemysql”命令,选择要使用的数据库,修改远程连接的基本信息,保存在mysql数据库中,因此使用mysql数据库。4.修改前先确认数据库是否已开启远程连接设置:5.使用“GRANTALLPRIVILEGESON.TO‘root’@’%’IDENTIFIEDBY‘

    2022年10月9日
    0
  • 【汇编语言】(x86)test与跳转指令(je jle jge jg jl……)组合的含义

    【汇编语言】(x86)test与跳转指令(je jle jge jg jl……)组合的含义在x86指令集中,经常遇到text指令与条件跳转指令组合,这是什么含义呢?博主表示,查了很多资料也没人完全说清楚……这里只用最简单的,抽象层次进行说明,不讲原理。举例text edx,edxjle 某地址含义是:如果edx<=0,就跳到某地址,否则继续往下执行。jle换成jg的话,就是edx>0跳转。其他同理。与cmp指令和跳转指令组合的区别是:这个组合比较的是cmpA,B中,A与B的关系。而textA,A则比较的是A与0的关系。这些都是抽象层次的应

    2025年6月25日
    1
  • notify()和 notifyAll()有什么区别_notify怎么记忆

    notify()和 notifyAll()有什么区别_notify怎么记忆今天看到一篇问题,提问线程唤醒顺序。具体代码如下:importjava.util.LinkedList;importjava.util.List;publicclassThreadRunSort{/***对象锁*/privatefinalObjectobject=newObject();p…

    2022年9月7日
    0
  • 使用SQL游标进行循环插入数据「建议收藏」

    使用SQL游标进行循环插入数据「建议收藏」使用SQL游标进行循环插入数据–给新建页面添加权限控制declare@RoleIDvarchar(50)declare@Opratorvarchar(50)DECLAREAutoInsertRowCURSORFORSELECTdistinctRoleID,OperatorFROMeOPENAutoInsertRow;FETCHNEXTFROM

    2022年7月14日
    13
  • linux arpspoof命令,Arpspoof的具体使用

    linux arpspoof命令,Arpspoof的具体使用比如我们要改百度的页面,哪么我们怎么做呢我们要先PING出百度的IP地址,然后在这个IP附近找同一个网段的服务器挨个入侵,就是通常说的C段,就会和百度在同一个交换机下了,然后使用我们提供的软件进行页面更改。看我的命令:arpspoof/i列出网卡数,记下序号,arpspoof/n生成一个JOB.txt这是规则文本,你可以使用TYPE来查看,并在里面加上HACKERBYsh3llc0d…

    2022年10月7日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号