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

相关推荐
Yan-英杰6 分钟前
【百日精通JAVA | SQL篇 | 第三篇】 MYSQL增删改查
java·数据库·sql
矛取矛求1 小时前
C++ 标准库参考手册深度解析
java·开发语言·c++
cijiancao1 小时前
23 种设计模式中的解释器模式
java·设计模式·解释器模式
南七行者1 小时前
对模板方法模式的理解
java·设计模式·模板方法
麻芝汤圆2 小时前
MapReduce 的广泛应用:从数据处理到智能决策
java·开发语言·前端·hadoop·后端·servlet·mapreduce
努力的搬砖人.2 小时前
java如何实现一个秒杀系统(原理)
java·经验分享·后端·面试
哈哈哈哈哈哈哈哈哈...........2 小时前
【java】在 Java 中,获取一个类的`Class`对象有多种方式
java·开发语言·python
fallwind_of_july2 小时前
java项目分享-分布式电商项目附软件链接
java·redis·分布式·mongodb·elasticsearch·微服务·rabbitmq
武昌库里写JAVA2 小时前
Golang的消息中间件选型
java·开发语言·spring boot·学习·课程设计
工一木子2 小时前
大厂算法面试 7 天冲刺:第6天-树与图深度剖析——高频算法面试题 & Java 实战
java·算法·面试