MyBatis Spring集成完全指南(史上最全)
以下這段內(nèi)容是 MyBatis-Spring 官方文檔的介紹部分,包括了:
- 什么是 MyBatis-Spring
- 為什么需要它(動機(jī))
- 使用它的前提條件和版本要求
下面我們逐段解釋,幫助你更好地“理解”這些內(nèi)容,特別是最后那個版本兼容性表格的含義。
一、什么是 MyBatis-Spring?
MyBatis-Spring integrates MyBatis seamlessly with Spring.
這句話的意思是:
MyBatis-Spring 是一個橋梁庫(library),用于將 MyBatis 框架和 Spring 框架無縫集成在一起。
它能實(shí)現(xiàn)以下功能:
| 功能 | 說明 |
|---|---|
| ? 參與 Spring 事務(wù)管理 | 在 Spring 的 @Transactional 注解下,MyBatis 的數(shù)據(jù)庫操作可以自動加入事務(wù)。 |
| ? 自動創(chuàng)建 Mapper 和 SqlSession | 不用手動打開 SqlSession 或 getMapper(),Spring 會幫你創(chuàng)建并管理。 |
| ? 注入到 Spring Bean 中 | MyBatis 的 Mapper 接口可以直接用 @Autowired 注入到 Service 等組件中。 |
| ? 異常轉(zhuǎn)換 | 將 MyBatis 拋出的異常轉(zhuǎn)換為 Spring 的 DataAccessException 層次結(jié)構(gòu),便于統(tǒng)一處理。 |
| ? 解耦 | 你的業(yè)務(wù)代碼不需要依賴 MyBatis 或 Spring 的 API,只需要面向接口編程。 |
?? 簡單說:有了 MyBatis-Spring,你就可以像使用 JPA 或 Spring JDBC 一樣,方便地在 Spring 項(xiàng)目中使用 MyBatis。
二、動機(jī)(Motivation)
這段講的是“為什么會有 MyBatis-Spring 這個項(xiàng)目?”
歷史背景如下:
- Spring 2.x 只支持舊版的 iBATIS(MyBatis 的前身)。
- Spring 3 開發(fā)時,MyBatis 3 還沒正式發(fā)布,所以 Spring 團(tuán)隊(duì)沒法把對 MyBatis 3 的支持加進(jìn)去。
- 結(jié)果:官方?jīng)]有提供對 MyBatis 3 的集成支持。
于是,社區(qū)開發(fā)者們決定自己搞一個項(xiàng)目來彌補(bǔ)這個空缺 —— MyBatis-Spring 應(yīng)運(yùn)而生。
?? 所以這是一個由 MyBatis 社區(qū)主導(dǎo)的子項(xiàng)目,目的就是讓 MyBatis 能更好地與 Spring 集成。
三、要求(Requirements)
文檔提醒你:
在開始之前,你應(yīng)該已經(jīng)掌握了 MyBatis 和 Spring 的基礎(chǔ)知識。
?? 換句話說:這個文檔不是入門教程,它假設(shè)你已經(jīng)會用:
- MyBatis(寫 mapper.xml、定義接口、SqlSession 等)
- Spring(IoC、AOP、事務(wù)管理等)
如果你還不熟悉這兩個框架,建議先去學(xué)習(xí)它們的基礎(chǔ)知識。
四、版本兼容性表格詳解
這是最關(guān)鍵的表格,決定了你在項(xiàng)目中應(yīng)該選擇哪個版本的 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 所依賴的其他框架的最低版本要求。
你可以根據(jù)自己的項(xiàng)目技術(shù)棧來選擇合適的 MyBatis-Spring 版本。
? 示例 1:你現(xiàn)在用的是 Spring Boot 3(對應(yīng) Spring 6)
- Spring Boot 3 默認(rèn)使用 Spring Framework 6
- 需要 Java 17+
- 所以你應(yīng)該選擇 MyBatis-Spring 3.0 或更高
<!-- Maven 依賴示例 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.x</version> <!-- 對應(yīng)底層 mybatis-spring 3.0 -->
</dependency>?? 注意:mybatis-spring-boot-starter 內(nèi)部封裝了 mybatis-spring,版本要匹配。
? 示例 2:你用的是 Spring Boot 2.7(對應(yīng) 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> <!-- 對應(yīng) mybatis-spring 2.1.x -->
</dependency>? 示例 3:老系統(tǒng),Spring 3.2.2 + MyBatis 3.4
- 這種情況很少見了,但如果是維護(hù)老系統(tǒng):
- 用 MyBatis-Spring 1.3
- 最低支持 Java 6
?? 總結(jié):怎么選擇 MyBatis-Spring 版本?
| 你的環(huán)境 | 推薦版本 |
|---|---|
| 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+(老舊系統(tǒng)) | MyBatis-Spring 1.3 |
?? 提示:大多數(shù)現(xiàn)代項(xiàng)目都應(yīng)使用 MyBatis-Spring 2.1+ 或 3.0+,除非你在維護(hù)非常老的系統(tǒng)。
?? 補(bǔ)充說明:MyBatis-Spring vs MyBatis-Spring-Boot-Starter
| 名稱 | 作用 |
|---|---|
mybatis-spring | 核心集成庫,適用于純 Spring 項(xiàng)目(非 Boot) |
mybatis-spring-boot-starter | Spring Boot 的啟動器,自動配置 MyBatis,更方便 |
?? 如果你用的是 Spring Boot,優(yōu)先引入 mybatis-spring-boot-starter,它會自動引入合適版本的 mybatis-spring。
? 結(jié)論
你現(xiàn)在看到的內(nèi)容是在告訴你:
- MyBatis-Spring 是什么?
- → 是連接 MyBatis 和 Spring 的橋梁。
- 為什么要用它?
- → 官方不支持 MyBatis 3 與 Spring 的集成,所以社區(qū)自己做了。
- 怎么選版本?
- → 看你的 Spring 和 Java 版本,對照表格選擇對應(yīng)的 MyBatis-Spring 版本。
如果你想進(jìn)一步了解如何配置,比如:
- 如何配置
SqlSessionFactoryBean - 如何掃描 Mapper 接口
- 如何啟用事務(wù)
可以繼續(xù)問我,我可以給你完整的配置示例(XML 或 注解方式)。
到此這篇關(guān)于MyBatis Spring集成完全指南(史上最全)的文章就介紹到這了,更多相關(guān)MyBatis集成Spring內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring Boot 集成 MyBatis 全攻略(最新整理)
- MyBatis-Plus 與 Spring Boot 集成原理實(shí)戰(zhàn)示例
- SpringBoot集成MyBatis實(shí)現(xiàn)SQL攔截器的實(shí)戰(zhàn)指南
- springboot集成Mybatis-plus-join-boot-start詳解
- Spring?Boot?微服務(wù)中集成?MyBatis-Plus?與集成原生?MyBatis在配置上的不同
- Spring?Boot?集成?MyBatis?全面講解(最新推薦)
- SpringBoot同時集成Mybatis和Mybatis-plus框架
- SpringBoot與MyBatis-Plus的高效集成方式
- SpringBoot?2.7.18?集成?Mybatis?Plus?+?Druid的實(shí)例詳解
- springboot集成mybatis-plus全過程
相關(guān)文章
Java實(shí)現(xiàn)統(tǒng)計字符串出現(xiàn)的次數(shù)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)統(tǒng)計字符串出現(xiàn)的次數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
Java 實(shí)現(xiàn)緩存的三種方式及問題匯總
這篇文章主要介紹了Java 實(shí)現(xiàn)緩存的三種方式及問題匯總,HashMap實(shí)現(xiàn)緩存,可以實(shí)現(xiàn)簡單的本地緩存,但是實(shí)際開發(fā)中不推薦,我們可以簡單模擬一下緩存的實(shí)現(xiàn),本文通過示例代碼介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-03-03
java實(shí)現(xiàn)短地址服務(wù)的方法(附代碼)
大多數(shù)情況下URL太長,字符多,不便于發(fā)布復(fù)制和存儲,本文就介紹了通過java實(shí)現(xiàn)短地址服務(wù),減少了許多使用太長URL帶來的不便,需要的朋友可以參考下2015-07-07

