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 开发 可 以 节 省 很 多 代 码 , 提 高 效 率 。

相关推荐
盖世英雄酱581368 分钟前
Java 内存管理技巧(新手必看集合篇)
java
码农小灰11 分钟前
Java 8 Stream API 入门到实践详解
java·java案例
步、步、为营16 分钟前
.NET 事件模式举例介绍
java·开发语言·.net
cui_hao_nan19 分钟前
设计模式——模板方法
java·设计模式
小吕学编程19 分钟前
HttpServletRequest常用方法
java·http
在未来等你20 分钟前
Java并发编程实战 Day 11:并发设计模式
java·设计模式·多线程·并发编程·threadlocal·生产者消费者·读写锁
李少兄32 分钟前
解决 idea提示`SQL dialect is not configured` 问题
java·sql·intellij-idea
BreezeDove38 分钟前
IDEA安装&迁移IDEA配置数据位置
java·ide·intellij-idea
太阳之神aboluo42 分钟前
压测软件-Jmeter
java·运维·jmeter
编程乐学(Arfan开发工程师)1 小时前
42、响应处理-【源码分析】-浏览器与PostMan内容协商完全适配
java·spring boot·后端·测试工具·lua·postman