《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis MyBatis 概述 阅读笔记 37

《SpringBoot 3:入门与应用实战》第 13 章 整合 MyBatis MyBatis 概述 阅读笔记 37

Spring Framework 的 JDBC 模块提供的 JdbcTemplate 已经在一定程度上简化了数据库开发的复杂度,尽管如此,实际的项目开发中更多的场景是整合成熟的持久层框架完成与数据库交互。目前市面上比较流行的持久层框架包括 MyBatis 和 Spring Data JPA(底层默认依赖 Hibernate)​。本章先讲解 Spring Boot 与 MyBatis 的整合,同时还会讲解一个市面上很流行的 MyBatis 增强框架:MyBatis-Plus。

13.1 MyBatis 概述

在 MyBatis 官方文档的醒目位置有官方对 MyBatis 的高度概括:

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射;

MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作;

MyBatis 可以通过简单的 XML 或注解来配置和映射,Java POJO(普通Java对象)为数据库中的记录。

13.1.1 MyBatis 的历史

对大多数了解 MyBatis 的读者来说,可能了解最多的部分是 MyBatis 的前身是 iBATIS,之前在 Apache 的名下,后来迁移到 Google Code,后又到 GitHub 上,仅此而已。

1.MyBatis 与 Hibernate 的出现时间相当

首先解释一个部分读者印象中的误区:MyBatis 的出现是为了取代笨重的 Hibernate。其实从出现时间来看,MyBatis 最初的创建时间是 2001年,第一个发行版 (JPetStore) 出现在 2002 年 7 月,而 Hibernate 的第一个发行版出现在 2001 年 11 月。所以从历史上看,MyBatis 跟Hibernate 本就是相互独立的,并没有谁要取代谁的意思,两个框架的侧重点和关注点不一样,使用的场景也会有差别。

2.MyBatis 的前身 iBATIS

最初 iBATIS 的创始人 Clinton Begin 最先开发的产品并不是 iBATIS-DAO,而是着眼于密码软件相关的解决方案,iBATIS 团队的第一个产品是Secrets,这是一个个人数据的加密器和签名工具。

发布了 Secrets 之后不久,Clinton Begin 及其团队决定转型关注 Web 和其他相关的技术,在接下来的一年中发布了两个工具(Axle web 与Lookout)​。不过最重要的转折点是在微软发布了一个文档之后,该文档声称 .NET 分别有 10 倍于 J2EE 的速度和 4 倍的生产效率。Clinton Begin 的团队看到该文档后予以快速回应,他们发布了 JPetStore。

后来经过时间的检验,大家发现 Java 不仅比 .NET 更有生产效率,同时 JPetStore 拥有更好的架构。JPetStore 的发布引起了当时开发界的关注,大家对 JPetStore 的持久层设计很感兴趣,于是后来 JPetStore 的持久层部分逐渐被抽取出来打包,进而发展成当时的 iBATIS。

2004 年 11 月,iBATIS 2.0 发布,Clinton Begin 将 iBATIS 与代码一同贡献给了 Apache,自此成为 Apache 开源组织下的一个子项目。

3.从 iBATIS 到 MyBatis

2010 年 5 月,Clinton Begin 决定将整个 iBATIS 项目团队迁移至 Google Code,并在 2010 年 6 月完成迁移。那时正值 iBATIS 3.0 版本发布,Clinton Begin 决定给新版本赋予新的名字:MyBatis。2013 年 11 月,MyBatis 的代码迁移至 GitHub,并一直持续到现在。

13.1.2 MyBatis 的架构

从整体上讲,MyBatis 的架构可以分为三层。

  • 接口层:SqlSession 是平时与 MyBatis 完成交互的核心接口(包括整合 Spring Framework 和 Spring Boot 后用到的 SqlSessionTemplate)。
  • 核心层:SqlSession 执行的方法,底层需要经过配置文件的解析、SQL 解析,以及执行 SQL 时的参数映射、SQL 执行、结果集映射,另外还有穿插其中的扩展插件。
  • 支持层:核心层的功能实现,它基于底层的各个模块,共同协调完成。

总体来讲,使用 MyBatis 可以灵活、完整、相对轻量化地与数据库进行交互。

13.1.3 MyBatis 的配置

MyBatis 的核心是 SqlSessionFactory,它的内部组合了数据源和相关的 SQL 配置,它的主要作用是生成 SqlSession 对象,而 SqlSession 是MyBatis 操作数据库的核心 API。

相关推荐
qq_284274051 小时前
机械设计基础·滚动轴承全解(类型·代号·选型·寿命)+轮系与蜗杆蜗轮传动
笔记·学习·自动化·制造
驭渊的小故事1 小时前
MyBatis XML 开发实战:从配置到 CRUD 全解析
xml·java·mybatis
ACP广源盛139246256736 小时前
硬件选型笔记:国产 PCIe Gen2.1 交换芯片 IX6024@ACP,工控与存量设备国产化改造方案评估
笔记·硬件架构·硬件工程·pcie·国产芯片
文人sec7 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
IT研究室8 小时前
最新计算机毕业设计选题推荐-基于spring boot的葡萄酒文化宣传网站-网站-文档指导-Java-springboot
java·spring boot·课程设计
摇滚侠9 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
xier_ran9 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
志尊宝9 小时前
Vue3 零基础每日笔记(078):首屏加载速度优化汇总——清单化方案
笔记
凤山老林10 小时前
Spring Boot 集成 Sa-Token 实现高可用权限认证:登录鉴权、动态路由权限与接口防重放实战
spring boot·后端·sa-token·bootstrap
Wx-bishekaifayuan11 小时前
springboot桂味美食分享系统40540-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游