首页 > 其他分享 >MyBatis运行原理

MyBatis运行原理

时间:2023-10-05 16:11:28浏览次数:27  
标签:xml 映射 MappedStatement mybatis Executor MyBatis 原理 运行

MyBatis运行原理

为了更加深入和清晰地掌握MyBatis,我们来深入了解MyBatis的运行原理,如图所示。

 

从上图可以看出,MyBatis框架在操作数据库时大致经过了10个步骤;具体如下:

  1. 读取 MyBatis 全局配置文件 mybatis-config.xml。该文件中存有MyBatis的运行信息以及数据库连接信息。
  2. 加载mybatis-config.xml中配置的映射文件mapper.xml。映射文件需要在mybatis-config.xml中配置才能得以被加载。
  3. 利用从mybatis-config.xml中读取到的信息创建Configuration对象。通俗地说,Configuration对象存储了mybatis-config.xml中的所有配置信息。在初始化Configuration对象的时候还会创建MappedStatement对象。映射文件中的每一个<select/>、<insert/>、<update/>、<delete/>标签都对应一个MappedStatement对象。而且,这些标签的id即是MappedStatement的id。
  4. 通过MyBatis配置信息构建会话工厂SqISessionFactory。
  5. 由SqlSessionFactory创建SqlSession对象。
  6. 创建执行器Executor。SqlSession内部通过执行器Executor操作数据库。在Executor的执行过程中需要MappedStatement类型的参数。除此以外,Executor还负责维护查询缓存。
  7. 通过 MappedStatement将接口文件中的输入参数映射到映射文件的SQL语句中,输入参数的类型可以为Java基本数据类型、POJO、集合等。此处对输入参数的映射过程类似于JDBC编程中对preparedStatement对象设置参数的过程。在完成输入参数映射后,Executor执行数据库操作。
  8. 数据库执行SQL语句
  9. 数据库返回SQL执行结果
  10. 通过MappedStatement将执行结果映射成Java基本数据类型、POJO、集合等。此处对执行结果的映射类似于JDBC编程中对数据的解析处理过程。

标签:xml,映射,MappedStatement,mybatis,Executor,MyBatis,原理,运行
From: https://www.cnblogs.com/shangeg/p/17742525.html

相关文章

  • C和CPP程序是如何运行起来的?
    C和CPP程序是如何运行起来的?个人见解,谨慎阅读。如有错误,欢迎指正!代码均在Linux下编译运行。1.C语言程序从源码到可执行文件的过程C语言程序从源码到可执行文件的过程主要分为以下几个步骤:预处理、编译、汇编、链接。flowchartLRA1[代码]--"预处理"-->B1[预处理文......
  • es倒序索引原理
    3.倒排索引原理:(1).两个document:ThequickbrownfoxjumpedoverthelazydogQuickbrownfoxesleapoverlazydogsinsummer(2).提取文档分词,建立倒排索引(区分了大小写):TermDoc_1Doc_2-------------------------Quick||XThe|X|br......
  • 《【告天下】费马最后猜想归一原理证明步骤及其它——》 回复
    《【告天下】费马最后猜想归一原理证明步骤及其它——》   https://tieba.baidu.com/p/8632684851     学帝 写了一篇酣畅淋漓的文章,  本帖提出了许多纲领性的知识点, 也是对过去的一些总结 。  费马大定理的证明步骤 这个之前好像看到......
  • MapReduce运行模式
    1、yarn集群运行先将之前写好的MapReduce程序进行打包--Maven-->package;打包完成之后的jar包在target目录下可以找到!!!之后将jar包上传到我们的虚拟机文件夹里面去;之后输入命令:hadoopjarjar包名称jar包主类的全路径名称回车之后开始运行;在hdfs的浏览器界面(9870)能够找到......
  • Mybatis知识
    1.#{}和${}{}解析为SQL时,会将形参变量的值取出,并自动给其添加引号。username="Amy"{}可以防止SQL注入而${}却不行${}解析为SQL时,将形参变量的值直接取出,直接拼接显示在SQL中username=${value}->username=Amyusername='${value}'->username='Amy'模糊查询场景......
  • MyBatis配置文件
    1、pom.xml文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http:/......
  • MyBatis概念
    一、MyBatis特征1、它是一个半自动的ORM框架。2、轻便、灵活;功能强大、使用简单、扩展性极强。3、支持定制化SQL、存储过程以及高级映射。4、避免了几乎所有的JDBC代码和手工操作。5、可使用XML或注解将接口和POJO映射成数据库中的记录。 2、ORM模型概要简单地说,ORM......
  • MyBatis知识
    MyBatisMyBatis是一款优秀的半自动的ORM持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和JavaPOJO(PlainOldJavaObjects,普通老式......
  • FreeRTOS 原理 --- heap 堆内存的使用
    FreeRTOS一共提供了5种申请内存的方案heap1只申请不释放,内存利用率最高。申请出来的内存块,没有内存块头记录这个内存的大小,所以也无法释放,也正是没有内存块头,内存利用率高使用场景:不需要频繁申请内存heap2能申请能释放,不能合并内存块。每个内存块都有一个内存块头,有一个链表......
  • mybatis项目启动报错:reader entry: ���� = v
    问题再现在SSM项目中,启动程序时控制台会报乱码,如下图所示:解决方案一去掉mybatis配置文件中关于别名的配置,然后在mapper.xml文件中使用完整的类名。待删除的示例代码如下:<typeAliases><packagename="com.tiku.domain.entity"/></typeAliases>解决方案二添加新的依赖......