mybatis原理(含图)

2023-11-08

在这里插入图片描述
上面中流程就是MyBatis内部核心流程,每一步流程的详细说明如下文所述:

(1)读取MyBatis的配置文件。mybatis-config.xml为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对结果集的解析过程。
MyBatis的基本工作原理就是:先封装SQL,接着调用JDBC操作数据库,最后把数据库返回的表结果封装成Java类。
附上mybatis官网添加链接描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mybatis原理(含图) 的相关文章

  • 如何克服原语按值传递的事实

    我有一段很长的代码来计算两个值 doubles 对我来说 我在几个地方使用了这段代码 为了坚持 DRY 原则 我应该将这段代码重构为一个很好的单元测试方法 但是我不能让它返回两个双精度数 而双精度数是原始的 因此不能按值传递和操作 我能想到
  • 插入最大日期(独立于数据库)

    在我的本地设置中 我使用一个简单的 H2 数据库 托管 解决方案将有另一个 类似但不相同 数据库 我需要将最大可能日期插入到日期时间列中 我尝试使用 Instant MAX 但是 这会导致列中出现 169104626 12 11 20 08
  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • 使用 JPA Criteria API 进行分页的总行数

    我正在系统中为实体实现 高级搜索 功能 以便用户可以使用该实体的属性上的多个条件 eq ne gt lt 等 来搜索该实体 我正在使用 JPA 的 Criteria API 动态生成 Criteria 查询 然后使用setFirstResu
  • 是什么决定了从 lambda 创建哪个函数式接口?

    请考虑这个例子 import java util function Consumer public class Example public static void main String args Example example new
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • Hibernate.createBlob() 方法从 Hibernate 4.0.1 开始已弃用,并移至 Hibernate.getLobCreator(Session session).createBlob()

    Method Hibernate createBlob 已弃用自休眠4 0 1并搬到Hibernate getLobCreator Session session createBlob 任何解决方案我应该在方法内传递什么getLobCrea
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • 在 S3 中迭代对象时出现“ConnectionPoolTimeoutException”

    我已经使用 aws java API 一段时间了 没有遇到太多问题 目前我使用的是库 1 5 2 版本 当我使用以下代码迭代文件夹内的对象时 AmazonS3 s3 new AmazonS3Client new PropertiesCred
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • 使用 SQLITE 按最近的纬度和经度坐标排序

    我必须获得一个 SQLite SQL 语句 以便在给定初始位置的情况下按最近的纬度和经度坐标进行排序 这是我在 sqlite 数据库中的表的例句 SELECT id name lat lng FROM items EXAMPLE RESUL
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • Cucumber Java 与 Spring Boot 集成 - Spring @Autowired 抛出 NullPointer 异常

    我正在为 Spring boot 应用程序编写 cucumber java 单元测试来测试每个功能 当我与 Spring Boot 集成时 Autowired 类抛出 NullPointer 异常 Spring Boot应用程序类 Spri
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • 如何从 Maven 存储库引用本机 DLL?

    如果 JAR 附带 Maven 存储库中的本机 DLL 我需要在 pom xml 中放入什么才能将该 DLL 放入打包中 更具体地举个例子Jacob http search maven org artifactdetails 7Cnet s

随机推荐

  • Axiom3D:Ogre地形代码解析

    Axiom3D Ogre地形代码解析 作者 天天不在 发布日期 2014 09 01 20 52 05 我来说两句 0 Tag标签 地形 代码 大致流程 这里简单介绍下 Axiom中采用的Ogre的地形组件的一些概念与如何生成地形 先说下大
  • mysql查看数据类型命令_mysql菜鸟指南(增删查改、数据类型、常用命令)

    1 连接数据库 root host mysql u root p Enter password 2 查看数据库 SHOW DATABASES 3 创建数据库 mysql gt CREATE DATABASE 库名 mysql gt USE
  • 面试题目解析-----三极管&窗口比较器

    第4题 面试大佬直接给出了答案 有题目可以知道题目设计要求是正逻辑 3 3V输入12V输出 0V输入0V输出 使用两个NPN管子就可以实现 第5题 设计一个窗口比较器输出两种不同的状态 并点亮LED 答案如下 第5题更新一个优化版 优化版本
  • 行业变天,汽车经销商如何转型破局?

    2018年 对于中国汽车经销集团来说 可谓是一个分水岭 首次迎来了数月月度销量同比降幅超过两位数的时代 行业转型迫在眉睫 在11月初举行的汽车流通协会年会中 汽车经销集团们确立了新的建设目标和方向 会议上 协会会长沈进军以及诸多行业企业代表
  • Spring Security + token前后端分离该怎么认证

    前言 因为这个Spring Security学习的过程比较曲折 最初以为比较简单 但是实际上也确实比较简单 最大的坑点在于 大多数找到的关于Spring Security都不是基于前后端分离进行的配置 解决了一个bug发现了更多的bug 烦
  • Spring系列五:Spring怎么解决循环依赖

    15 说说循环依赖 什么是循环依赖 Spring循环依赖 Spring 循环依赖 简单说就是自己依赖自己 或者和别的Bean相互依赖 鸡和蛋 只有单例的Bean才存在循环依赖的情况 原型 Prototype 情况下 Spring会直接抛出异
  • Docker启动过程中常见错误解决

    错误 Cannot connect to the Docker daemon at unix var run docker sock Is the docker daemon running 如果在Centos7上执行 systemctl
  • 面试:js 延迟加载方式

    相关知识点 js 延迟加载 也就是等页面加载完成之后再加载 JavaScript 文件 js 延迟加载有助于提高页面加载速度 一般有以下几种方式 defer 属性 async 属性 动态创建 DOM 方式 使用 setTimeout 延迟方
  • 在JAVA中intValue()、parseInt()、valueOf()的区别

    JAVA API文档对于intValue parseInt valueOf 的介绍 详解见代码 package JAVA API public class Test public static void main String args I
  • xpath下载安装

    xpath是我们提取网页内容的常用的一款Chrome插件 反正就是很好用 下面是提供xpath安装的方式 1 找到Chrome插件官网地址下载xpath http chromecj com web development 2018 01 8
  • IDEA -gradle项目构建报错:Could not resolve all artifacts for configuration :classpath

    问题出现 加新依赖 刷新导入时报错 build gradle设置镜像 即在下面中加入 maven url http maven aliyun com nexus content groups public buildscript repos
  • 计算机组成原理:了解计算机三种编址方式(按位编址、字节编址、字编址)

    目录 一 首先简单了解一下字节 Byte 和位 b 二 B KB MB GB之间的转换关系 三 目前计算机有三种编址方式 1 按位编址 1b 2 字节编址 1 Byte 8b 3 字编址 机器字长word 32b 64b 四 例题来加深理解
  • matlab 从航空激光雷达数据中提取森林度量和单棵树属性

    目录 一 功能概述 1 算法概述 2 加载和可视化数据 3 分割提取地面点和非地面点 4 高程归一化 5 提取森林指标 6 冠层高度模型 7 检测树顶 8 单树分割 9 提取树属性 二 完整代码 三 结果展示
  • 借据与电子借据

    借据 借据是个人或单位借用个人或公家的现金 财物时所写的凭证性的一种应用文 借据 条 是人们在日常工作和生活中经常使用的一种应用文 借据从发文的角度看可以分为两类 一类是个人在借他人或单位的钱物时向对方所写的借据或借条 另一类是单位向个人或
  • 【银行转账-功能测试分析】

    转账功能分析 通过选择付款账号 填写转账金额 输入收款账户 含收款账号 收款人姓名 开户行 以及其他附加信息 手机号 备注等 填写好之后 进入安全认证页面选择安全工具 填写安全密码 最后提交转账 测试分析与设计思路 1 正常流程类设计 确保
  • elementui-slider 滑动时会重置为0的问题解决

    文章目录 问题描述 问题排查 问题解决 总结 问题描述 首次打开有 elementui slider的页面 不管滑动哪个滑块 滑动时都会自动归0 划得动 但是会自动回到最左侧0的位置 但是他确实触发了change函数 问题排查 尝试了很多方
  • Sentinel限流算法详解(硬啃)

    文章目录 常见四种限流算法 固定窗口计数器 滑动窗口计数器 漏桶 也有称漏斗 Leaky bucket 令牌桶 Token bucket Sentinel源码举例 滑动窗口 漏桶 令牌桶 常见四种限流算法 固定窗口计数器 固定窗口 相比其他
  • 如何进入安全模式? windows系统使用小技巧

    一 Windows95环境下进入安全模式 1 开启计算机 如果正在运行Windows 请重启计算机 2 在计算机开启时 请留意观察屏幕 当出现Starting Windows 95的时候 按住F5键 这样就能进入安全模式 3 或者 在计算机
  • easyexcel poi 一个模板导出excel包含多个sheet

    easy poi 一个模板导出excel包含多个sheet 1 简述 2 导出代码实例 3 导出模板 4 导出效果 5 项目实战案例 1 简述 通过调用ExcelExportUtil exportExcelClone map params
  • mybatis原理(含图)

    上面中流程就是MyBatis内部核心流程 每一步流程的详细说明如下文所述 1 读取MyBatis的配置文件 mybatis config xml为MyBatis的全局配置文件 用于配置数据库连接信息 2 加载映射文件 映射文件即SQL映射文