Spring Boot 與 MyBatis 版本兼容性

初接觸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 執行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72423.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72423.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72423.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GCN從理論到實踐——基于PyTorch的圖卷積網絡層實現

Hi&#xff0c;大家好&#xff0c;我是半畝花海。圖卷積網絡&#xff08;Graph Convolutional Network, GCN&#xff09;是一種處理圖結構數據的深度學習模型。它通過聚合鄰居節點的信息來更新每個節點的特征表示&#xff0c;廣泛應用于社交網絡分析、推薦系統和生物信息學等領…

MyBatis-Plus 邏輯刪除實現

在很多企業級應用中&#xff0c;數據刪除操作通常采用 邏輯刪除 的方式&#xff0c;而不是物理刪除。邏輯刪除指的是通過更新字段&#xff08;例如 is_deleted 或 status&#xff09;來標記數據為刪除狀態&#xff0c;而不是真的從數據庫中刪除記錄。這樣做的好處是保留數據的歷…

STM32_IIC外設工作流程

STM32 IC 外設工作流程&#xff08;基于寄存器&#xff09; 在 STM32 中&#xff0c;IC 通信主要通過一系列寄存器控制。理解這些寄存器的作用&#xff0c;能夠幫助我們掌握 IC 硬件的運行機制&#xff0c;實現高效的數據傳輸。本文以 STM32F1&#xff08;如 STM32F103&#x…

集合遍歷的多種方式

目錄 1.增強for 2.迭代器&#xff08;在遍歷的過程中需要刪除元素&#xff0c;請使用迭代器&#xff09; 3.雙列集合 4.Lambda表達式(forEach方法) 1.單列集合&#xff1a; 2.雙列集合&#xff1a; 4.Stream 流 5.普通for循環 6.列表迭代器 7.總結 1.增強for 注&…

DeepSeek在MATLAB上的部署與應用

在科技飛速發展的當下&#xff0c;人工智能與編程語言的融合不斷拓展著創新邊界。DeepSeek作為一款備受矚目的大語言模型&#xff0c;其在自然語言處理領域展現出強大的能力。而MATLAB&#xff0c;作為科學計算和工程領域廣泛應用的專業軟件&#xff0c;擁有豐富的工具包和高效…

value_counts()和unique()

我今天發現一個很有意思的問題哈 import scanpy as sc import numpy as npX np.random.randn(10,3) adata1 sc.AnnData(X) adata1.obs["sample"] "H1" print(adata1)X np.random.randn(20,3) adata2 sc.AnnData(X) adata2.obs["sample"] &…

每日OJ_牛客_游游的字母串_枚舉_C++_Java

目錄 牛客_游游的字母串_枚舉 題目解析 C代碼 Java代碼 牛客_游游的字母串_枚舉 游游的字母串 描述&#xff1a; 對于一個小寫字母而言&#xff0c;游游可以通過一次操作把這個字母變成相鄰的字母。a和b相鄰&#xff0c;b和c相鄰&#xff0c;以此類推。特殊的&#xff0…

【AI深度學習基礎】Pandas完全指南入門篇:數據處理的瑞士軍刀 (含完整代碼)

&#x1f4da; Pandas 系列文章導航 入門篇 &#x1f331;進階篇 &#x1f680;終極篇 &#x1f30c; &#x1f4cc; 一、引言 在大數據與 AI 驅動的時代&#xff0c;數據預處理和分析是深度學習與機器學習的基石。Pandas 作為 Python 生態中最強大的數據處理庫&#xff0c;以…

數字萬用表的使用教程

福祿克經濟型數字萬用表前面板按鍵功能介紹示意圖 1. 萬用表簡單介紹 萬用表是一種帶有整流器的、可以測量交、直流電流、電壓及電阻等多種電學參量的磁電式儀表。分為數字萬用表&#xff0c;鉗形萬用表&#xff0c; &#xff08;1&#xff09;表筆分為紅、黑二只。使用時黑色…

C# IComparable<T> 使用詳解

總目錄 前言 在C#編程中&#xff0c;IComparable<T> 是一個非常重要的接口&#xff0c;它允許我們為自定義類型提供默認的比較邏輯。這對于實現排序、搜索和其他需要基于特定規則進行比較的操作特別有用。本文將詳細介紹 IComparable<T> 的使用方法、應用場景及其…

DeepSeek使用手冊分享-附PDF下載連接

本次主要分享DeepSeek從技術原理到使用技巧內容&#xff0c;這里展示一些基本內容&#xff0c;后面附上詳細PDF下載鏈接。 DeepSeek基本介紹 DeepSeek公司和模型的基本簡介&#xff0c;以及DeepSeek高性能低成本獲得業界的高度認可的原因。 DeepSeek技術路線解析 DeepSeek V3…

Hugging Face 推出 FastRTC:實時語音視頻應用開發變得得心應手

估值超過 40 億美元的 AI 初創公司 Hugging Face 推出了 FastRTC&#xff0c;這是一個開源 Python 庫&#xff0c;旨在消除開發者在構建實時音頻和視頻 AI 應用時的主要障礙。 "在 Python 中正確構建實時 WebRTC 和 Websocket 應用一直都很困難&#xff0c;"FastRTC…

for循環相關(循環的過程中對數據進行刪除會踩坑)

# 錯誤方式&#xff0c; 有坑&#xff0c;結果不是你想要的。 user_list ["劉的話", "范德彪", "劉華強", 劉尼古拉斯趙四, "宋小寶", "劉能"] for item in user_list: if item.startswith("劉"): …

Qt顯示一個hello world

一、顯示思路 思路一&#xff1a;通過圖形化方式&#xff0c;界面上創建出一個控件顯示。 思路二&#xff1a;通過編寫C代碼在界面上創建控件顯示。 二、思路一實現 點開 Froms 的 widget.ui&#xff0c;拖拽 label 控件&#xff0c;顯示 hello world 即可。 qmake 基于 .…

復合機器人為 CNC 毛坯件上下料注入 “智能強心針”

在競爭日益激烈的 CNC 加工行業&#xff0c;如何提升生產效率、保證產品質量、實現智能化生產成為眾多企業亟待解決的問題。富唯智能憑借其先進的復合機器人技術&#xff0c;成功為多家 CNC 加工企業提供了毛坯件上下料的優質解決方案&#xff0c;有效提升了生產效能&#xff0…

電商業務數據測試用例參考

1. 數據采集層測試 用例編號測試目標測試場景預期結果TC-001驗證用戶行為日志采集完整性模擬用戶瀏覽、點擊、加購行為Kafka Topic中日志記錄數與模擬量一致TC-002驗證無效數據過濾規則發送爬蟲請求&#xff08;高頻IP&#xff09;清洗后數據中無該IP的日志記錄 2. 數據處理層…

Spring Cloud Gateway 網關的使用

在之前的學習中&#xff0c;所有的微服務接口都是對外開放的&#xff0c;這就意味著用戶可以直接訪問&#xff0c;為了保證對外服務的安全性&#xff0c;服務端實現的微服務接口都帶有一定的權限校驗機制&#xff0c;但是由于使用了微服務&#xff0c;就需要每一個服務都進行一…

webstorm的Live Edit插件配合chrome擴展程序JetBrains IDE Support實現實時預覽html效果

前言 我們平時在前端網頁修改好代碼要點擊刷新再去看修改的效果&#xff0c;這樣比較麻煩&#xff0c;那么很多軟件都提供了實時預覽的功能&#xff0c;我們一邊編輯代碼一邊可以看到效果。下面說的是webstorm。 1 Live Edit 首先我們需要在webstorm的settings里安裝插件Live …

map的operator[]的實現

map的operator[]的實現 operator[]里包含插入操作&#xff0c;所以我們先看一下首先看一下map的insert函數 返回值是一個pair類型。正常的常見的insert&#xff0c;插入成功返回true&#xff0c;失敗返回false 這里設計的insert不單單返回布爾值&#xff0c;而是返回一個pair…

定時器的編碼器接口模式

選擇編碼器接口模式的方法是&#xff1a;如果計數器只在TI2的邊沿計數&#xff0c;則置TIMx_SMCR寄存器中的SMS001&#xff0c;如果只在TI1邊沿計數&#xff0c;則置SMS010&#xff0c;如果計數器同時在TI1和TI2邊沿計數&#xff0c;則置SMS 011 明確一點&#xff0c;計數器…