MyBatis的解析和运行原理

文章目录

    • MyBatis的解析和运行原理
      • MyBatis的工作原理

MyBatis的解析和运行原理

MyBatis编程步骤是什么样的?
1、 创建SqlSessionFactory

2、 通过SqlSessionFactory创建SqlSession

3、 通过sqlsession执行数据库操作

4、 调用session.commit()提交事务

5、 调用session.close()关闭会话

MyBatis的工作原理

在学习 MyBatis 程序之前,需要了解一下 MyBatis 工作原理,以便于理解程序。MyBatis 的工作原理如下图
在这里插入图片描述

1)读取 MyBatis 配置文件mybatis-config.xmlMyBatis 的全局配置文件,配置了 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 对结果集的解析过程。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32-SPI1控制AD7705(Sigma-Delta-ADC芯片)

STM32-SPI1控制AD7705(Sigma-Delta-ADC芯片) 原理图手册说明功能方框图引脚功能 片内寄存器通信寄存器(RS2、RS1、RS00、0、0)设置寄存器时钟寄存器数据寄存器(RS2、RS1、RS00、1、1)测试寄存器&#xff08…

第六届 传智杯初赛B组

文章目录 A. 字符串拼接🍻 AC code B. 最小差值🍻 AC code C. 红色和紫色🍻 AC code D. abb🍻 AC code E. kotori和素因子🍻 AC code F. 红和蓝🍻 AC code 🥰 Tips:AI可以把代码从 j…

单片机AT89C51直流电机控制电路PWM设计

wx供重浩:创享日记 对话框发送:直流电机 获取论文报告源码源程序原理图 此文将介绍一种直流电机,详细阐述了用单片机输出口所给占空比的不同实现电机的调速的设计方法;着重讨论L298用于电机驱动时特有的优势。直流电机调速具有…

npm WARN npm npm does not support Node.js v13.9.0

Microsoft Windows [版本 10.0.19045.2965] (c) Microsoft Corporation。保留所有权利。C:\Users\Administrator>node -v v13.9.0C:\Users\Administrator>npm -v npm WARN npm npm does not support Node.js v13.9.0 npm WARN npm You should probably upgrade to a newe…

2023nacos源码解读第4集——整体了解nacos源码模块

文章目录 1、类Linux tree的windows treee工具2、源码目录结构3、模块依赖关系 1、类Linux tree的windows treee工具 windows 自带的tree 不够用,使用node npm安装一个类Linux 的treee npm install -g cnpm --registryhttps://registry.npm.taobao.org npm config…

GWAS:plink进行meta分析

之前教程提到过Metal是可以做Meta分析,除了Metal,PLINK也可以进行Meta分析。 命令如下所示: plink --meta-analysis gwas1.plink gwas2.plink gwas3.plink logscale qt --meta-analysis-snp-field SNP --meta-analysis-chr-field CHR --me…

.net 8 发布了,试下微软最近强推的MAUI

先看下实现的效果&#xff1a; 下面发下XAML文件&#xff1a; <?xml version"1.0" encoding"utf-8" ?> <ContentPage xmlns"http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x"http://schemas.microsoft.com/winfx/2009/…

MutationObserver 监视 DOM 树改变的api

1、介绍 MutationObserver是一个构造函数&#xff0c;可以用来监听某个节点的变化&#xff0c;当节点发生变化时&#xff0c;可以执行一些回调函数。 它不会立即执行&#xff0c;需要调用MutationObserver的observe方法&#xff0c;传入你想要监听的节点&#xff0c;以及一些配…

5.一维数组——输入一行字符,统计其中各个大写字母出现的次数。

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、举一反三一、题目描述 二、题目分析 三、解题 程序运行代码 前言 本系列为一维数组编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 输入一行字符&#xff0c;统计其中各个大写字母出现的…

平衡树 - splay

相比于之前的普通平衡树进行左旋右旋来比&#xff0c;splay的适用性更高&#xff0c;使用更广泛。 核心函数rotate、splay函数&#xff0c;其它的根据需要进行修改。 int n, m; struct Node {int s[2], p, v, cnt; // 左右儿子、父节点、值、出现数量int size, flag; // 子树大…

leetcode面试经典150题——32 串联所有单词的子串(中等+困难)

题目&#xff1a; 串联所有单词的子串(1中等) 描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&…

人力资源管理后台 === 员工新增修改

目录 1.员工管理-导出excel 2.员工管理-excel组件封装 3.员工管理-下载导入模板 4.员工管理-员工导入-上传excel 5.员工管理-删除员工 6.员工详情和路由 7.员工详情-表单数据校验 8.员工详情-封装部门级联组件 9.员工详情-级联组件-双向绑定 10.员工详情-新增员工 11…

async函数和await关键字

async写在一个函数a前面&#xff0c;该函数变为异步函数&#xff0c;可在里面使用await关键字&#xff0c;await后面一般跟一个promise对象&#xff08;axios函数返回一个promise对象&#xff0c;里面有异步任务&#xff09;&#xff0c;await会原地等待该异步任务结果&#xf…

Horizon地平线财富一直坚持“创新、开放、协作、共享”的运营理念

在“寒风凛冽”的熊市&#xff0c;投资人需要一颗不断探索、勇于尝试的心。 勇气意味着即使你知道这条路很难&#xff0c;你仍然选择坚持。而信念则是相信&#xff0c;即使现在很多人不理解、甚至嘲笑&#xff0c;未来总会有一天他们会明白。 Horizon一直坚持着“创新、开放、…

[计算机网络]应用层概述

0.写在前面: 该层为教学模型的最后一层,某种意义上来说是最接近各位开发者的一层,正因如此,这层中的很多定义和概念大家都有属于自己的理解, 完全按照书本反而才是异类,因此在这里我会去结合我做前端开发的一些经验,来处理和讲解一些概念,另外本层中的部分协议也不会过多阐述了…

【Amazon】通过代理连接的方式导入 AWS EKS集群至KubeSphere主容器平台

文章目录 一、设置主集群方式一&#xff1a;使用 Web 控制台方式二&#xff1a;使用 Kubectl命令 二、在主集群中设置代理服务地址方式一&#xff1a;使用 Web 控制台方式二&#xff1a;使用 Kubectl命令 三、登录控制台验证四、准备成员集群方式一&#xff1a;使用 Web 控制台…

RC-MVSNet:无监督的多视角立体视觉与神经渲染--论文笔记(2022年)

RC-MVSNet&#xff1a;无监督的多视角立体视觉与神经渲染--论文笔记&#xff08;2022年&#xff09; 摘要1 引言2 相关工作2.1 基于监督的MVS2.2 无监督和自监督MVS2.3 多视图神经渲染 3 实现方法3.1 无监督的MVS网络 Chang, D. et al. (2022). RC-MVSNet: Unsupervised Multi-…

Oracle(2-6) Backup and Recovery Overview

文章目录 一、基础知识1、Categories of Failures 故障类别2、Causes of Statement Failures 语句失败的原因故障情况Resolutions 决议 3、User Process Failures 用户进程失败故障情况Resolutions 决议 4、Possible User Errors 用户错误类型故障情况Resolutions 决议 5、Inst…

SpringCloud原理-OpenFeign篇(四、请求原理)

文章目录 前言正文一、书接上回&#xff0c;从代理对象入手二、ReflectiveFeign.FeignInvocationHandler#invoke()三、SynchronousMethodHandler#invoke(...) 的实现原理3.1 invoke(...)源码3.2 executeAndDecode(...) 执行请求并解码 四、如何更换client 的实现 附录附1&#…

【Linux】记录错误信息日志的实现

文章目录 前言一、 目录实现&#xff08;log.hpp&#xff09;二、目录的具体使用1.comm.hpp&#xff08;管道初始化&#xff09;2.sever.cpp&#xff08;为读端且令其创建命名管道&#xff09;3.client.cpp(为写端) 前言 我们这个设计的日志可以自定以输出的方向&#xff0c;可…