MyBatis Spring集成完全指南(史上最全)
作者:lang20150928
以下这段内容是 MyBatis-Spring 官方文档的介绍部分,包括了:
- 什么是 MyBatis-Spring
- 为什么需要它(动机)
- 使用它的前提条件和版本要求
下面我们逐段解释,帮助你更好地“理解”这些内容,特别是最后那个版本兼容性表格的含义。
一、什么是 MyBatis-Spring?
MyBatis-Spring integrates MyBatis seamlessly with Spring.
这句话的意思是:
MyBatis-Spring 是一个桥梁库(library),用于将 MyBatis 框架和 Spring 框架无缝集成在一起。
它能实现以下功能:
功能 | 说明 |
---|---|
✅ 参与 Spring 事务管理 | 在 Spring 的 @Transactional 注解下,MyBatis 的数据库操作可以自动加入事务。 |
✅ 自动创建 Mapper 和 SqlSession | 不用手动打开 SqlSession 或 getMapper(),Spring 会帮你创建并管理。 |
✅ 注入到 Spring Bean 中 | MyBatis 的 Mapper 接口可以直接用 @Autowired 注入到 Service 等组件中。 |
✅ 异常转换 | 将 MyBatis 抛出的异常转换为 Spring 的 DataAccessException 层次结构,便于统一处理。 |
✅ 解耦 | 你的业务代码不需要依赖 MyBatis 或 Spring 的 API,只需要面向接口编程。 |
📌 简单说:有了 MyBatis-Spring,你就可以像使用 JPA 或 Spring JDBC 一样,方便地在 Spring 项目中使用 MyBatis。
二、动机(Motivation)
这段讲的是“为什么会有 MyBatis-Spring 这个项目?”
历史背景如下:
- Spring 2.x 只支持旧版的 iBATIS(MyBatis 的前身)。
- Spring 3 开发时,MyBatis 3 还没正式发布,所以 Spring 团队没法把对 MyBatis 3 的支持加进去。
- 结果:官方没有提供对 MyBatis 3 的集成支持。
于是,社区开发者们决定自己搞一个项目来弥补这个空缺 —— MyBatis-Spring 应运而生。
🎯 所以这是一个由 MyBatis 社区主导的子项目,目的就是让 MyBatis 能更好地与 Spring 集成。
三、要求(Requirements)
文档提醒你:
在开始之前,你应该已经掌握了 MyBatis 和 Spring 的基础知识。
👉 换句话说:这个文档不是入门教程,它假设你已经会用:
- MyBatis(写 mapper.xml、定义接口、SqlSession 等)
- Spring(IoC、AOP、事务管理等)
如果你还不熟悉这两个框架,建议先去学习它们的基础知识。
四、版本兼容性表格详解
这是最关键的表格,决定了你在项目中应该选择哪个版本的 MyBatis-Spring。
MyBatis-Spring | MyBatis | Spring Framework | Spring Batch | Java |
---|---|---|---|---|
3.0 | 3.5+ | 6.0+ | 5.0+ | Java 17+ |
2.1 | 3.5+ | 5.x | 4.x | Java 8+ |
2.0 | 3.5+ | 5.x | 4.x | Java 8+ |
1.3 | 3.4+ | 3.2.2+ | 2.1+ | Java 6+ |
🔍 如何理解这个表格?
这个表格告诉你:不同版本的 MyBatis-Spring 所依赖的其他框架的最低版本要求。
你可以根据自己的项目技术栈来选择合适的 MyBatis-Spring 版本。
✅ 示例 1:你现在用的是 Spring Boot 3(对应 Spring 6)
- Spring Boot 3 默认使用 Spring Framework 6
- 需要 Java 17+
- 所以你应该选择 MyBatis-Spring 3.0 或更高
<!-- Maven 依赖示例 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.x</version> <!-- 对应底层 mybatis-spring 3.0 --> </dependency>
⚠️ 注意:mybatis-spring-boot-starter
内部封装了 mybatis-spring
,版本要匹配。
✅ 示例 2:你用的是 Spring Boot 2.7(对应 Spring 5)
- Spring Boot 2.x 使用的是 Spring 5.x
- 支持 Java 8+
- 所以你可以使用 MyBatis-Spring 2.1 或 2.0
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.x</version> <!-- 对应 mybatis-spring 2.1.x --> </dependency>
✅ 示例 3:老系统,Spring 3.2.2 + MyBatis 3.4
- 这种情况很少见了,但如果是维护老系统:
- 用 MyBatis-Spring 1.3
- 最低支持 Java 6
🧭 总结:怎么选择 MyBatis-Spring 版本?
你的环境 | 推荐版本 |
---|---|
Spring 6 + Java 17+(如 Spring Boot 3) | MyBatis-Spring 3.0+ |
Spring 5 + Java 8+(如 Spring Boot 2) | MyBatis-Spring 2.1 或 2.0 |
Spring 3.2+ + Java 6+(老旧系统) | MyBatis-Spring 1.3 |
💡 提示:大多数现代项目都应使用 MyBatis-Spring 2.1+ 或 3.0+,除非你在维护非常老的系统。
🔗 补充说明:MyBatis-Spring vs MyBatis-Spring-Boot-Starter
名称 | 作用 |
---|---|
mybatis-spring | 核心集成库,适用于纯 Spring 项目(非 Boot) |
mybatis-spring-boot-starter | Spring Boot 的启动器,自动配置 MyBatis,更方便 |
👉 如果你用的是 Spring Boot,优先引入 mybatis-spring-boot-starter
,它会自动引入合适版本的 mybatis-spring
。
✅ 结论
你现在看到的内容是在告诉你:
- MyBatis-Spring 是什么?
- → 是连接 MyBatis 和 Spring 的桥梁。
- 为什么要用它?
- → 官方不支持 MyBatis 3 与 Spring 的集成,所以社区自己做了。
- 怎么选版本?
- → 看你的 Spring 和 Java 版本,对照表格选择对应的 MyBatis-Spring 版本。
如果你想进一步了解如何配置,比如:
- 如何配置
SqlSessionFactoryBean
- 如何扫描 Mapper 接口
- 如何启用事务
可以继续问我,我可以给你完整的配置示例(XML 或 注解方式)。
到此这篇关于MyBatis Spring集成完全指南(史上最全)的文章就介绍到这了,更多相关MyBatis集成Spring内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- Spring Boot 集成 MyBatis 全攻略(最新整理)
- MyBatis-Plus 与 Spring Boot 集成原理实战示例
- SpringBoot集成MyBatis实现SQL拦截器的实战指南
- springboot集成Mybatis-plus-join-boot-start详解
- Spring Boot 微服务中集成 MyBatis-Plus 与集成原生 MyBatis在配置上的不同
- Spring Boot 集成 MyBatis 全面讲解(最新推荐)
- SpringBoot同时集成Mybatis和Mybatis-plus框架
- SpringBoot与MyBatis-Plus的高效集成方式
- SpringBoot 2.7.18 集成 Mybatis Plus + Druid的实例详解
- springboot集成mybatis-plus全过程