十分鐘了解 @MapperScan

@MapperScan?是 MyBatis 和 MyBatis-Plus 提供的一個?Spring Boot 注解,用于自動掃描并注冊 Mapper 接口,使其能夠被 Spring 容器管理,并與對應的 XML 或注解 SQL 綁定。它的核心作用是簡化 MyBatis Mapper 接口的配置,避免手動逐個聲明。

1. 基本用法

(1)在啟動類上添加?@MapperScan

@SpringBootApplication
@MapperScan("com.example.mapper") // 指定 Mapper 接口所在的包
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}
  • 作用:Spring 會掃描?com.example.mapper?包及其子包下的所有 Mapper 接口,并自動注冊為 Bean。

(2)掃描多個包

@MapperScan({"com.example.mapper", "com.another.dao"})
  • 可以傳入多個包路徑,適用于 Mapper 分散在不同模塊的情況。

2.?@MapperScan?的底層原理

  1. Spring 啟動時@MapperScan?會觸發?MapperScannerRegistrar,掃描指定包下的接口。

  2. 為每個 Mapper 接口生成代理對象(通過 JDK 動態代理或 CGLIB),并注冊到 Spring 容器。

  3. 代理對象會綁定對應的 SQL(XML 或注解方式),執行數據庫操作。

3.?一定需要@MapperScan嗎?

1. 什么情況下可以不用?@MapperScan

(1) 使用 MyBatis 的?<mapper>?接口手動注冊

如果你在 MyBatis 的全局配置文件(如?mybatis-config.xml)中手動注冊了 Mapper 接口,例如:

<mappers><mapper class="com.example.dao.UserDao"/>
</mappers>

則不需要?@MapperScan。但這種方式在 Spring Boot 中很少用。?

(2) 使用?@Mapper?注解標記每個 DAO 接口

如果每個 Mapper 接口都添加了?@Mapper?注解(MyBatis 提供的注解),Spring Boot 會自動掃描它們:

@Mapper // 關鍵注解
public interface UserDao {User selectById(Long id);
}

此時不需要?@MapperScan,但需確保:

  • 接口所在的包路徑被 Spring Boot 主類默認掃描(即與啟動類同級或子包)。

  • 項目中不存在其他沖突配置。

2. 什么情況下必須用?@MapperScan

(1) 未使用?@Mapper?注解

如果 DAO 接口沒有逐個添加?@Mapper?注解,必須通過?@MapperScan?批量指定掃描路徑:

@SpringBootApplication
@MapperScan("com.example.dao") // 指定 DAO 接口所在的包
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}
(2) 需要靈活控制掃描范圍
  • 當 DAO 接口分散在多個包中時:

@MapperScan({"com.example.dao", "com.another.package.dao"})
  • 當需要排除某些接口時(結合自定義過濾器)。

?

?

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

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

相關文章

深度解析 MindTorch:無縫遷移 PyTorch 到 MindSpore 的高效工具

在深度學習領域&#xff0c;框架的選擇往往取決于開發者的習慣、硬件支持以及項目需求。PyTorch 作為當前最受歡迎的深度學習框架之一&#xff0c;以其動態圖機制和簡潔的 API 設計深受開發者喜愛。然而&#xff0c;隨著昇騰硬件的崛起&#xff0c;如何高效地利用昇騰的強大計算…

[250506] Auto-cpufreq 2.6 版本發布:帶來增強的 TUI 監控及多項改進

目錄 Auto-cpufreq 2.6 版本發布&#xff1a;帶來增強的 TUI 監控及多項改進 Auto-cpufreq 2.6 版本發布&#xff1a;帶來增強的 TUI 監控及多項改進 Auto-cpufreq&#xff0c;一款適用于 Linux 的免費開源自動 CPU 速度與功耗優化器&#xff0c;已發布其最新版本 2.6。該工具…

Linux 更改內存交換 swap 為 zram 壓縮,減小磁盤寫入

1、查看當前 swap 的方式 swapon --show 我這里是默認的 swap 文件&#xff0c;大小為 2G。 2、安裝 zram Ubuntu 下&#xff1a; sudo apt install zram-tools安裝后默認會啟動&#xff1a; 3、關閉默認的 swap 文件 sudo swapoff /swapfile 其次是關閉 /etc/fstab 中的 …

ORCAD打印pdf

1 筆記本電腦綁定了打印機&#xff0c;要改成這個

C++中指針使用詳解(4)指針的高級應用匯總

C 中指針的高級應用非常豐富&#xff0c;掌握這些內容能讓你寫出更高性能、更底層控制力強的代碼。下面是應用模塊梳理和例子講解。 目錄預覽 函數指針與回調機制指針數組 vs 數組指針指針與類成員函數&#xff08;成員函數指針&#xff09;智能指針&#xff08;unique_ptr, s…

圖像處理軟件imgPro—調參救星!

推薦一款圖像處理軟件imgPro&#xff0c;該軟件是逛B站時偶然間發現&#xff0c;雖然up主是新號&#xff0c;但是視頻中看起來非常實用&#xff01; 核心是多種算法高效調參&#xff0c;亮點是自動生成源碼&#xff01;這您受得了嗎&#xff1f;調試之后&#xff0c;直接復制代…

DOM基礎學習

一、DOM文檔對象模型 通常將DOM看作一顆“樹”&#xff0c;DOM將整個文檔看作一顆“家譜樹 ” 二、對象 用戶定義的對象內建對象&#xff08;Array、Date、Math&#xff09;宿主對象 三、節點 node 元素節點&#xff08;element node&#xff09;文本節點&#xff08;text…

初識人工智能、機器學習、深度學習和大模型

文章目錄 1. 前言2. 相關概念3. 層級關系4. 應用場景對比4. 實際案例 初識人工智能、機器學習、深度學習和大模型 1. 前言 之前經常聽人說AI、機器學習&#xff0c;深度學習之類的詞匯&#xff0c;總是傻傻的不了解他們的區別&#xff0c;近來有空&#xff0c;來通俗說說個人看…

n8n系列(1)初識n8n:工作流自動化平臺概述

1. 引言 隨著各類自動化工具的涌現,n8n作為一款開源的工作流自動化平臺,憑借其靈活性、可擴展性和強大的集成能力,正在獲得越來越多技術團隊的青睞。 本文作為n8n系列的開篇,將帶您全面了解這個強大的自動化平臺,探索其起源、特性以及與其他工具的差異,幫助您判斷n8n是否…

Linux:web服務

一、nginx的安裝及啟用 1、為主機配置IP和搭建軟件倉庫 &#xff08;1&#xff09;IP的配置 &#xff08;2&#xff09;搭建軟件倉庫 2、 web服務的安裝與啟用 &#xff08;1&#xff09;nginx的端口 更改nginx端口號 效果 &#xff08;2&#xff09; 默認發布目錄 修改默認發…

用卷積神經網絡 (CNN) 實現 MNIST 手寫數字識別

在深度學習領域&#xff0c;MNIST 手寫數字識別是經典的入門級項目&#xff0c;就像編程世界里的 “Hello, World”。卷積神經網絡&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;作為處理圖像數據的強大工具&#xff0c;在該任務中展現出卓越的性能。本…

從 MDM 到 Data Fabric:下一代數據架構如何釋放 AI 潛能

從 MDM 到 Data Fabric&#xff1a;下一代數據架構如何釋放 AI 潛能 —— 傳統治理與新興架構的范式變革與協同進化 引言&#xff1a;AI 規模化落地的數據困境 在人工智能技術快速發展的今天&#xff0c;企業對 AI 的期望已從 “單點實驗” 轉向 “規模化落地”。然而&#…

蒼穹外賣部署到云服務器使用Docker

部署前端 1.創建nginx鏡像 docker pull nginx 2.宿主機&#xff08;云服務器&#xff09;創建掛載目錄和文件 最好手動創建 而不是通過docker run創建&#xff0c;否則nginx.conf 默認會被創建為文件夾 nginx.conf 和html可以直接從黑馬給的資料里導入 3.運行nginx容器&am…

C++ 滲透 數據結構中的二叉搜索樹

歡迎來到干貨小倉庫 "沙漠盡頭必是綠洲。" --面對技術難題時&#xff0c;堅持終會看到希望。 1.二叉搜索樹的概念 二叉搜索樹又稱二叉排序樹&#xff0c;它或者是一顆空樹&#xff0c;或者是具有以下性質的二叉樹&#xff1a; a、若它的左子樹不為空&#xff0c;則…

實現滑動選擇器從離散型的數組中選擇

1.使用原生的input 詳細代碼如下&#xff1a; <template><div class"slider-container"><!-- 滑動條 --><inputtype"range"v-model.number"sliderIndex":min"0":max"customValues.length - 1"step&qu…

ARM尋址方式

尋址方式指的是確定操作數位置的方式。 尋址方式&#xff1a; 立即數尋址 直接尋址&#xff08;絕對尋址&#xff09;&#xff0c;ARM不支持這種尋址方式&#xff0c;但所有CISC處理器都支持 寄存器間接尋址 3種尋址方式總結如下&#xff1a; 助記符 RTL格式 描述 ADD r0,r1…

學苑教育雜志學苑教育雜志社學苑教育編輯部2025年第9期目錄

專題研究 核心素養下合作學習在初中數學中的應用 鄭鐵洪; 4-6 教育管理 小學班級管理應用賞識教育的策略研究 芮望; 7-9 課堂教學 小學數學概念教學的實踐策略 劉淑萍; 10-12 “減負提質”下小學五年級語文課堂情境教學 王利;梁巖; 13-15 小練筆的美麗轉身…

關于類型轉換的細節(隱式類型轉換的臨時變量和理解const權限)

文章目錄 前言類型轉換的細節1. 類型轉換的臨時變量細節二&#xff1a;const與指針 前言 關于類型轉換的細節&#xff0c;這里小編和大家探討兩個方面&#xff1a; 關于類型轉化的臨時變量的問題const關鍵字的權限問題 — 即修改權限。小編或通過一道例題&#xff08;配圖&am…

技術對暴力的削弱

信息時代的大政治分析&#xff1a;效率對暴力的顛覆 一、工業時代勒索邏輯的終結 工廠罷工的消亡 1930年代通用汽車罷工依賴工廠的物理集中、高資本投入和流水線脆弱性&#xff0c;通過暴力癱瘓生產實現勒索。 信息時代企業分散化、資產虛擬化&#xff08;如軟件公司可攜帶代碼…

深入理解分布式鎖——以Redis為例

一、分布式鎖簡介 1、什么是分布式鎖 分布式鎖是一種在分布式系統環境下&#xff0c;通過多個節點對共享資源進行訪問控制的一種同步機制。它的主要目的是防止多個節點同時操作同一份數據&#xff0c;從而避免數據的不一致性。 線程鎖&#xff1a; 也被稱為互斥鎖&#xff08…