自学内容网 自学内容网

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


原文地址:https://blog.csdn.net/miachen520/article/details/144356744

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!