首页 > 其他分享 >[Spring]MyBatis的执行原理

[Spring]MyBatis的执行原理

时间:2024-09-08 10:47:02浏览次数:10  
标签:xml 映射 MappedStatement Spring SQL MyBatis 原理 执行

MyBatis的执行原理详细介绍
为了使大家能够更加清晰的理解MyBatis程序,在正式讲解MyBatis入门案例之前,先来了解一下MyBatis程序的工作原理,如图1所示。

MyBatis的工作原理

image

从图1可以看出,MyBatis框架在操作数据库时,大体经过了8个步骤。下面就对图1中的每一步流程进行详细讲解,具体如下。

  • (1)读取MyBatis配置文件mybatis-config.xml。mybatis-config.xml作为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息,其中主要内容是获取数据库连接

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


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

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


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

  • (6)在Executor接口的执行方法中,包含一个MappedStatement类型的参数,该参数是对映射信息的封装,用来存储要映射的SQL语句的id、参数等。Mapper.xml文件中一个SQL对应一个MappedStatement对象,SQL的id即是MappedStatement的id。


  • (7)输入参数映射。在执行方法时,MappedStatement对象会对用户执行SQL语句的输入参数进行定义(可以定义为Map、List类型、基本类型和POJO类型),Executor执行器会通过MappedStatement对象在执行SQL前,将输入的Java对象映射到SQL语句中。这里对输入参数的映射过程就类似于JDBC编程中对preparedStatement对象设置参数的过程。

  • (8)输出结果映射。在数据库中执行完SQL语句后,MappedStatement对象会对SQL执行输出的结果进行定义(可以定义为Map和List类型、基本类型、POJO类型),Executor执行器会通过MappedStatement对象在执行SQL语句后,将输出结果映射至Java对象中。这种将输出结果映射到Java对象的过程就类似于JDBC编程中对结果的解析处理过程。

通过上面对MyBatis框架执行流程的讲解,相信读者对MyBatis框架已经有了一个初步的了解。对于初学者来说,上面所讲解的内容可能不会完全理解,现阶段也不要求读者能完全理解,这里讲解MyBatis框架的执行过程是为了方便后面程序的学习。在学习完MyBatis框架后,读者自然就会明白上面所讲解的内容了。

标签:xml,映射,MappedStatement,Spring,SQL,MyBatis,原理,执行
From: https://www.cnblogs.com/DCFV/p/18402665

相关文章

  • SpringBoot发送邮件
    0导入发送邮件的依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency>1获取邮件授权码2配置yml文件spring:mail:#smtp服务主机qq邮箱则为smtp.qq.comhost:s......
  • 【含文档+PPT+源码】基于SpringBoot+Vue医药知识学习与分享平台的设计与实现
    项目介绍本课程演示的是一款基于SpringBoot+Vue医药知识学习与分享平台的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料2.带你从零开始部署运行本套系统3.该项目附......
  • springboot个性化大学生线上聊天交友系统
    基于springboot+vue实现的个性化大学生线上聊天交友系统 (源码+L文+ppt)4-017           4系统设计  4.1软件功能模块设计  个性化大学生线上聊天交友分为两个模块,分别是管理员功能模块和用户功能模块。主要功能模块包括:首页、用户、省、市、爱好、......
  • 猎豹算法(CO)优化BP神经网络原理及Matlab代码
    目录0引言1数学模型2优化方式3Maltab代码3.1伪代码3.2CO主函数代码3.3CO-BP4视频讲解0引言猎豹算法(cheetahoptimizer,CO)是MohammadAminAkbari于2022年基于猎豹的狩猎策略启发而提出的智能算法。CO模拟猎豹的三种主要策略来捕猎猎物,即搜索、坐着和攻击;同时......
  • 猎豹算法(CO)优化支持向量机原理及Matlab代码
    目录0引言1数学模型2优化方式3Maltab代码3.1伪代码3.2CO主函数代码3.3CO-SVM4视频讲解0引言猎豹算法(cheetahoptimizer,CO)是MohammadAminAkbari于2022年基于猎豹的狩猎策略启发而提出的智能算法。CO模拟猎豹的三种主要策略来捕猎猎物,即搜索、坐着和攻击;同时......
  • 猎豹算法(CO)优化长短期记忆神经网络原理及Matlab代码
    目录0引言1数学模型2优化方式3Maltab代码3.1伪代码3.2CO主函数代码3.3CO-LSTM4视频讲解0引言猎豹算法(cheetahoptimizer,CO)是MohammadAminAkbari于2022年基于猎豹的狩猎策略启发而提出的智能算法。CO模拟猎豹的三种主要策略来捕猎猎物,即搜索、坐着和攻击;同......
  • SpringBoot自动装配-Condition
    SpringBoot的自动装配(Auto-configuration)是其框架中一项强大的功能,它基于条件化装配(ConditionalConfiguration)机制,能够根据应用程序的依赖和配置自动完成大部分常见的配置工作,从而大大减少了开发者在项目中进行繁琐手动配置的工作量。Condition机制是SpringBoot自动装配的......
  • calico网络原理、组网方式
    Calico是一个用于Kubernetes和其他容器编排系统的网络插件,主要提供高性能的网络连接和安全策略。其设计理念和组网方式如下:网络原理Layer3路由:Calico采用Layer3(L3)网络模型,允许每个Pod拥有一个唯一的IP地址。它通过在基础网络上直接路由IP流量来实现这一点,而不是使用Overl......
  • kubectl exec 实现的原理
    kubectlexec是Kubernetes中用于在运行中的Pod内部执行命令的一个常用命令。其实现原理涉及多个组件的协作,包括KubernetesAPIServer、Kubelet和容器运行时。以下是kubectlexec的工作原理详细说明:1.用户输入命令用户通过kubectlexec命令指定要在某个Pod内执行......
  • 2025年25届最新:如何打造Java SpringBoot个人健康档案管理系统,集成Vue,实现高效信息管理
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、微信小程序、大数据实战项目集⚡⚡......