Java面试常见问题:Mybatis的工作原理

2023-11-12

ORM框架是几乎所有Java应用都会用到的技术,大多数ORM框架都是将Java对象与数据表进行关联,Mybatis则是将Java方法和SQL语句进行了映射(Mapping)。这样不仅简化了ORM操作,同时也支持数据表关联查询、视图查询、存储过程调用等比较复杂的操作。本文就来分析一下MyBatis的工作原理,这也是Java面试中经常考察的内容。

Mybatis实现了方法与SQL语句之间的映射

MyBatis的操作主要有两个阶段:

  • 初始化阶段: 完成MyBatis运行环境的准备工作,包括读取XML配置文件和注解中的配置信息,创建配置对象,并完成各个模块的初始化的工作。
  • 数据读写阶段: 由数据读写操作触发,按照要求完成具体的CRUD操作。

MyBatis初始化

在初始化阶段,MyBatis 主要进行了以下几项工作。

  • 首先根据配置文件的位置,获取它的输入流 InputStream。通常MyBatis的配置文件是XML文件。
  • 从配置文件的根节点开始,逐层解析配置文件,也包括相关的映射文件。解析过程中不断将解析结果放入 Configuration对象。
  • 以配置好的 Configuration对象为参数,获取一个 SqlSessionFactory对象,也就是 SqlSession 的工厂实例。

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

Java面试常见问题:Mybatis的工作原理 的相关文章

随机推荐

  • Servlet 的应用程序设计

    目录 1 基于 Servlet Controller 的应用程序设计 2 基于 Filter Dispatcher 的应用程序设计 3 使用表单验证器 4 添加数据库访问 5 依赖注入 在该模型中 用一个 Servlet 或者过滤器充当控制
  • Flex中字符串String按照格式转化为日期Date的方法

    在Flex中 要通过传入时间的字符串和格式字符串的方式来转换出Date Flex本身没有完善的方法 不知道Adobe在想什么 这么简单实用的功能都没有 回想起来 还是java神马的好 在网上找了好久都没有完善的解决方案 最后偶然发现Date
  • cout << 输出格式突然变成了16进制

    1 背景 在工程中 我通过cout打印一个被频繁调用的函数里面某个参数的值 在前面若干次调用中 cout lt lt 工作正常 是打印的10进制 突然 不清楚什么原因 就开始打印16进制的值 而且是不加0x的16进制 导致我一直以为是10进
  • 力扣:338. 比特位计数

    给你一个整数 n 对于 0 lt i lt n 中的每个 i 计算其二进制表示中 1 的个数 返回一个长度为 n 1 的数组 ans 作为答案 示例 1 输入 n 2 输出 0 1 1 解释 0 gt 0 1 gt 1 2 gt 10 示例
  • 枪神纪紫霄系列服务器,枪神纪紫霄左轮枪简测评

    枪神纪最新的新年红包武器紫霄左轮枪上线 小编这就给各位玩家带来 枪神纪紫霄左轮枪武器测评 枪神纪紫霄左轮枪怎么样 红包武器 紫霄左轮枪 面板 面板伤害比重击左轮高出10点伤害 穿甲多出65 稳定高出20 便携高6 外观 简直和这皮肤是一套的
  • Mac M1 安装配置TensorFlow-GPU

    在Mac上安装了TensorFlow 但是import Tensorflow时却一直显示TensorFlow不存在 看了各种安装方法 最后终于成功了 进入正题 直接进官网 根据苹果官方给的安装方法进行安装 https developer a
  • Windows下安装 Redis

    目录 1 下载 1 1 Redis官网 1 2 github下载地址 2 安装步骤 2 1 解压Redis压缩包 2 2 创建临时服务 2 3 启动客户端 2 4 注册Redis服务 3 总结 4 致谢 1 下载 1 1 Redis官网 D
  • python linux系统巡检脚本

    使用python 实现linux 系统巡检远程获取系统资源情况 导出为excel表格 背景 因为服务器很多 刚开始一台一台手动巡检 效率很低 于是我想能不能写个工具实现一劳永逸 于是我想到了python python 具有丰富的类库 且语言
  • Arduino安装ESP32下载失败的解决方法

    Arduino安装ESP32时 经常下载失败 解决办法 1 复制命令行中的提示信息到记事本 找到下载地址 2 打开浏览器 在地址栏中贴粘下载地址 回车开始下载 3 将下载的包复制到C Users Administrator AppData
  • 《Cesium 基础知识点》- 申请 Cesium Ion 密钥

    一 为什么要申请 学习 链接 Cesium ion是一个提供瓦片图和3D地理空间数据的平台 Cesium ion支持把数据添加到用户自己的应用程序中 Cesium ion的使用需要申请access token 申请成功后 就能畅快的访问Ce
  • Pandas 中DataFrame的groupby()计数、groupby()取样及reset_index()的使用

    什么是groupby 以下为对DataFrame对象按A进行分组操作 图片来源 内容 目的 DataFrame对象按照指定列 LNG LAT 分组计数 并将分组计数结果 包括指定列及计数值 写入csv文件中 过程 代码一 import pa
  • python中line的意思_关于python代码,line[:-1]的意思

    line 1 其实就是去除了这行文本的最后一个字符 换行符 后剩下的部分 line abcde line 1 结果为 abcd line abcde line 1 结果为 edcba 扩展资料 1 先定义一个array数据 1 import
  • Http 状态码

    常见HTTP状态码大全1xx 临时响应 表示临时响应并需要请求者继续执行操作的状态代码 代码 说明http状态码 100 继续 请求者应当继续提出请求 服务器返回此代码表示已收到请求的第一部分 正在等待其余部分 http状态码 101 切换
  • org.springframework.beans.factory.BeanCreationException的问题所在!!

    今天一不小心弄出的小问题 严重 Exception sending context initialized event to listener instance of class org springframework web contex
  • 记录一次iPhone5s的iCloud bypass经历

    之前成功过一次 使用的是checkra1n v0 9 5 越狱成功后 使用ssh连接手机 执行以下几个命令 正在挂载根目录文件系统为读写 bash 3 2 mount o rw union update bash 3 2 echo gt g
  • C语言:选择+编程(每日一练Day3)

    目录 选择题 题一 题二 题三 题四 题五 编程题 题一 记负均正 思路一 题二 旋转数组的最小数字 思路一 选择题 题一 1 已知函数的原型是 int fun char b 10 int a 设定义 char c 10 int d 正确的
  • Centos7部署MySQL主从复制

    一 准备 1 准备两台服务器 如果本地测试 准备两台虚拟机 2 两台服务器上安装相同的mysql数据库 3 我这里准备两台虚拟机演示 192 168 21 102 主机 192 168 21 105 从机 4 在两台mysql数据库分别创建
  • 计算机视觉理论笔记 (5) - 边缘检测 (Edge Detection)

    边缘检测 Edge Detection 总览 边缘 edges 基于梯度 gradient 的边缘检测 检测不连续性 detection of discontinuities 1D 2D 梯度强度阈值 threshold 噪声影响 其他算子
  • QT学习三之多界面跳转与对话框

    以下内容均是个人理解 不保证都是正确的 如有错欢迎指正 欢迎学习交流 815030927 qq com 一 多界面跳转 1 介绍 MVC框架 MVC是模型 model 视图 view controller 控制器 的缩写 模型视图控制器是一
  • Java面试常见问题:Mybatis的工作原理

    ORM框架是几乎所有Java应用都会用到的技术 大多数ORM框架都是将Java对象与数据表进行关联 Mybatis则是将Java方法和SQL语句进行了映射 Mapping 这样不仅简化了ORM操作 同时也支持数据表关联查询 视图查询 存储过