Mybatis相关面试题

一、什么是 Mybatis?
1、Mybatis 是一 个 半 ORM( 对象 关 系 映 射 )框架 ,它内 部 封 装 了 JDBC,开发时只需 要 关 注 SQL 语句 本 身 ,不 需 要 花 费 精 力 去 处 理 加 载 驱 动 、 创 建 连 接 、 创 建statement 等繁 杂 的 过 程 。程序 员 直 接 编 写 原 生 态 sql,可以 严 格 控 制 sql 执行 性能, 灵 活 度 高 。
2、 MyBatis 可以 使 用 XML 或注 解 来 配 置 和 映 射 原 生 信 息 , 将 POJO 映射 成 数据库中 的记录 , 避 免 了 几 乎 所 有 的 JDBC 代码 和 手 动 设 置 参 数 以 及 获 取 结 果 集 。
3、通 过 xml 文件 或 注 解 的 方 式 将 要 执 行 的 各 种 statement 配置 起 来 , 并 通 过java 对象 和 statement 中 sql 的动 态 参 数 进 行 映 射 生 成 最 终 执 行 的 sql 语句 ,最后由 mybatis 框架 执 行 sql 并将 结 果 映 射 为 java 对象 并 返 回 。 ( 从 执 行 sql 到返回 result 的过 程 ) 。

二、Mybaits 的优点:
1、基于 SQL 语句 编 程 ,相当 灵 活 ,不会 对 应 用 程 序 或 者 数 据 库 的 现 有 设 计 造 成 任
何影 响 ,SQL 写在 XML 里 ,解除 sql 与程 序 代 码 的 耦 合 ,便于 统 一 管 理 ;提供 XML
标签 , 支 持 编 写 动 态 SQL 语句 , 并 可 重 用 。
2、与 JDBC 相比 ,减少 了 50%以上 的 代 码 量 ,消除 了 JDBC 大量 冗 余 的 代 码 ,不需要 手 动 开 关 连 接 ;
3、很好 的 与 各 种 数 据 库 兼 容( 因为 MyBatis 使用 JDBC 来连 接 数 据 库 ,所以 只 要JDBC 支持 的 数 据 库 MyBatis 都支 持 ) 。
4、能 够 与 Spring 很好 的 集 成 ;
5、提 供 映 射 标 签 , 支 持 对 象 与 数 据 库 的 ORM 字段 关 系 映 射 ; 提 供 对 象 关 系 映 射标签 , 支 持 对 象 关 系 组 件 维 护 。

三、MyBatis 框架的缺点:
1、 SQL 语句 的 编 写 工 作 量 较 大 , 尤 其 当 字 段 多 、 关 联 表 多 时 , 对 开 发 人 员 编 写SQL 语句 的 功 底 有 一 定 要 求 。
2、 SQL 语句 依 赖 于 数 据 库 , 导 致 数 据 库 移 植 性 差 , 不 能 随 意 更 换 数 据 库 。

四、MyBatis 框架适用场合:
1、 MyBatis 专注 于 SQL 本身 , 是 一 个 足 够 灵 活 的 DAO 层解 决 方 案 。
2、对性 能 的 要 求 很 高 ,或者 需 求 变 化 较 多 的 项 目 ,如互 联 网 项 目 ,MyBatis 将是不错 的 选 择 。

五、MyBatis 与 Hibernate 有哪些不同?
1、Mybatis 和 hibernate 不同 ,它不 完 全 是 一 个 ORM 框架 ,因为 MyBatis 需要程序 员 自 己 编 写 Sql 语句 。
2、 Mybatis 直接 编 写 原 生 态 sql,可 以 严 格 控 制 sql 执行 性 能 , 灵 活 度 高 , 非 常适合 对 关 系 数 据 模 型 要 求 不 高 的 软 件 开 发 , 因 为 这 类 软 件 需 求 变 化 频 繁 , 一 但 需求变 化 要 求 迅 速 输 出 成 果 。 但 是 灵 活 的 前 提 是 mybatis 无法 做 到 数 据 库 无 关 性 ,
如果 需 要 实 现 支 持 多 种 数 据 库 的 软 件 ,则需 要 自 定 义 多 套 sql 映射 文 件 ,工作 量 大 。
3、 Hibernate 对象 /关系 映 射 能 力 强 , 数 据 库 无 关 性 好 , 对 于 关 系 模 型 要 求 高 的软件 , 如 果 用 hibernate 开发 可 以 节 省 很 多 代 码 , 提 高 效 率 。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea_maven详解

秒懂Maven maven简介maven安装和配置maven本地配置maven工程的GAVP创建maven工程项目结构说明项目构建说明 Maven依赖管理核心信息配置依赖管理配置依赖信息查询依赖范围设置依赖属性配置依赖下载失败错误解决Build构建配置依赖传递依赖冲突 maven工程继承继承作用应用场景继承…

使用qrcode 前端生成二维码

安装依赖 npm install qrcode在Vue中使用 <template><div class"qr-code-generator"><inputv-model"text"type"text"placeholder"请输入要生成二维码的内容"class"input-box"/><button click"g…

Linux Ubuntu 安装配置RabbitMQ,springboot使用RabbitMQ

rabbit-Ubuntu 一篇文章学会RabbitMQ 在Ubuntu上查看RabbitMQ状态可以通过多种方式进行&#xff0c;包括使用命令行工具和Web管理界面。以下是一些常用的方法&#xff1a; 1-使用systemctl命令&#xff1a; sudo systemctl start rabbitmq-server sudo systemctl status ra…

LeetCode—189. 轮转数组(中等)

题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例1&#xff1a; 输入: nums [1,2,3,4,5,6,7], k 3输出:[5,6,7,1,2,3,4] 解释: 向右轮转 1 步:[7,1,2,3,4,5,6] 向右轮转 2 步:[6,7,1,2,3,4,5] 向…

C# 向上取整多种实现方法

1.使用 Math.Ceiling 方法&#xff1a; 在 C# 中&#xff0c;可以利用 System.Math 类下的 Math.Ceiling 方法来实现向上取整。它接受一个 double 或 decimal 类型的参数&#xff0c;并返回大于或等于该参数的最小整数&#xff08;以 double 或 decimal 类型表示&#xff09;。…

微信小程序报错:http://159.75.169.224:7300不在以下 request 合法域名列表中,请参考文档

要解决此问题&#xff0c;需打开微信小程序开发者工具进行设置&#xff0c;打开详情-本地设置重新运行&#xff0c;该报错就没有啦

vrrp主备备份

VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗余协议&#xff09;是一种用于实现路由器冗余以提高网络可靠性的协议。以下是对VRRP的详细介绍&#xff1a; 基本概念 VRRP路由器&#xff1a;运行VRRP协议的路由器称为VRRP路由器。虚拟路由器&#…

Selenium:强大的 Web 自动化测试工具

Selenium&#xff1a;强大的 Web 自动化测试工具 在当今的软件开发和测试领域&#xff0c;自动化工具的重要性日益凸显。Selenium 就是一款备受欢迎的 Web 自动化测试工具&#xff0c;它为开发者和测试人员提供了强大的功能和便利。本文将详细介绍 Selenium 是什么&#xff0c…

Spark架构及运行流程

Spark架构图 Driver&#xff1a; 解析用户的应用程序代码&#xff0c;转化为作业(job)。创建SparkContext上下文对象&#xff0c;其负责与资源管理器(ClusterManager)通信&#xff0c;进行资源的申请、任务的分配和监控等。跟踪Executor的执行情况。可通过UI界面查询运行情况。…

使用go生成、识别二维码

1、下载 # 创建目录 # 进入目录 # 执行 go mod init xxx 命令&#xff08;即&#xff1a;在当前目录初始化创建一个模块&#xff09;# 下载gozxing go get github.com/makiuchi-d/gozxing 2、生成二维码 package mainimport ("image/png""os""gith…

【大模型系列篇】LLaMA-Factory大模型微调实践 - 从零开始

前一次我们使用了NVIDIA TensorRT-LLM 大模型推理框架对智谱chatglm3-6b模型格式进行了转换和量化压缩&#xff0c;并成功部署了推理服务&#xff0c;有兴趣的同学可以翻阅《NVIDIA TensorRT-LLM 大模型推理框架实践》&#xff0c;今天我们来实践如何通过LLaMA-Factory对大模型…

iOS如何自定义一个类似UITextView的本文编辑View

对于IOS涉及文本输入常用的两个View是UITextView和UITextField&#xff0c;一个用于复杂文本输入&#xff0c;一个用于简单文本输入&#xff0c;在大多数开发中涉及文本输入的场景使用这两个View能够满足需求。但是对于富文本编辑相关的开发&#xff0c;这两个View就无法满足自…

Android 使用 Canvas 和 Paint 实现圆角图片

学习笔记 效果展示: 全部代码: public class YuanActivity extends AppCompatActivity {private ActivityYuanBinding binding;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 通过 DataBinding 获取布局文件binding …

单词拼写纠正-04-161.力扣 相隔为 1 的编辑距离

拼写纠正系列 NLP 中文拼写检测实现思路 NLP 中文拼写检测纠正算法整理 NLP 英文拼写算法&#xff0c;如果提升 100W 倍的性能&#xff1f; NLP 中文拼写检测纠正 Paper java 实现中英文拼写检查和错误纠正&#xff1f;可我只会写 CRUD 啊&#xff01; 一个提升英文单词拼…

Java设计模式 —— 【创建型模式】建造者模式详解

文章目录 一、建造者模式二、案例实现三、优缺点四、模式拓展五、对比1、工厂方法模式VS建造者模式2、抽象工厂模式VS建造者模式 一、建造者模式 建造者模式&#xff08;Builder Pattern&#xff09; 又叫生成器模式&#xff0c;是一种对象构建模式。它可以将复杂对象的建造过…

泷羽sec学习打卡-brupsuite4

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于brupsuite的那些事儿-proxy proxyInterceptHTTP history/WebSocket history&#xff08;历史记录&a…

redis数据结构和内部编码及单线程架构

博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:数据库 JavaEE专栏:JavaEE 软件测试专栏:软件测试 关注博主带你了解更多知识 1. 数据结构和内部编码 Redis会在合适的场景选择合适的内部编码 我们可以通过objectencoding命令查询内部编码 : 2. 单线程架构 …

leetcode每日一题51

话说最近工作也步入正轨了 稍微。。。也适应了工作的节奏。。。 希望能让自己的个人简历好看一点吧 有时候很悲观&#xff0c;觉得自己现在的岗位不太行&#xff0c;虽然需要编程能力&#xff0c;但是如果跳槽&#xff0c;可能变成数据分析的类型了。。。 不知道未来如何&#…

旅游管理系统的设计与实现

文末获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;旅游管理系统的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#…

LVS的DR模式是否依赖内核的数据包转发

LVS的DR模式是否依赖内核的数据包转发 是的&#xff0c;LVS&#xff08;Linux Virtual Server&#xff09; 的 DR&#xff08;Direct Routing&#xff09;模式 依赖于 内核的数据包转发。在 DR 模式下&#xff0c;数据包的转发行为是由 Linux 内核进行的&#xff0c;因此正确配…