初接觸Spring Boot,本次使用Spring Boot版本為3.4.3,mybatis的起步依賴版本為3.0.0,在啟動時報錯,報錯代碼如下
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'userMapper' defined in file
?(一)解決方法
1.將?mybatis的起步依賴mybatis-spring-boot-starter版本升級為3.0.3
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency>
2.重新加載Maven項目
?(二)MyBatis的理解
1.MyBatis是什么?
MyBatis 是一款優秀的持久層框架,它通過對象關系映射(ORM)技術,將數據庫表與 Java 對象進行映射。它允許開發者手動編寫 SQL 語句,同時自動處理 SQL 的執行和結果集的映射。MyBatis 屬于半自動化 ORM 框架,因為它需要開發者編寫 SQL,但會自動完成對象與數據庫的映射。
2.MyBatis的作用
(1)簡化數據庫操作
MyBatis 免除了幾乎所有的 JDBC 代碼,包括手動設置參數和獲取結果集的工作。通過簡單的 XML 或注解配置,可以將 Java 方法與 SQL 語句綁定,從而實現數據庫的增刪改查操作。
(2)對象關系映射(ORM)
MyBatis 提供了對象與數據庫表之間的映射功能,可以將數據庫中的記錄自動封裝成 Java 對象,或者將 Java 對象的數據存儲到數據庫中。
(3)動態 SQL
MyBatis 支持動態 SQL,可以根據條件動態生成 SQL 查詢語句,這使得 SQL 更加靈活。
(4)緩存機制
MyBatis 提供了一級緩存和二級緩存,能夠有效提高查詢性能。
(5)事務管理
MyBatis 提供了事務管理機制,支持聲明式和編程式事務,確保數據庫操作的一致性。
3.?MyBatis 在 Spring Boot 中的優勢
-
靈活性:開發者可以手動編寫 SQL,充分發揮數據庫的性能優化能力。
-
易學易用:相比 Hibernate 等全自動 ORM 框架,MyBatis 更加簡潔,容易上手。
-
與 Spring 集成:MyBatis 與 Spring Boot 集成后,可以利用 Spring 的事務管理和依賴注入功能。
4.?MyBatis 的核心組件
在 Spring Boot 中,MyBatis 的核心組件包括:
-
SqlSessionFactory
:全局單例,用于創建SqlSession
。 -
SqlSession
:線程非安全的會話對象,用于執行 SQL 和獲取映射器。 -
MapperProxy
:動態代理對象,將接口方法調用轉換為 SQL 執行。