最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot注解@MapperScan的實(shí)現(xiàn)

 更新時(shí)間:2025年05月07日 08:58:18   作者:擺爛且佛系  
@MapperScan是MyBatis和MyBatis-Plus提供的SpringBoot注解,用于自動(dòng)掃描并注冊?Mapper?接口,使其能夠被?Spring?容器管理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

1. 基本用法

(1)在啟動(dòng)類上添加 @MapperScan

@SpringBootApplication
@MapperScan("com.example.mapper") // 指定 Mapper 接口所在的包
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

作用:Spring 會(huì)掃描 com.example.mapper 包及其子包下的所有 Mapper 接口,并自動(dòng)注冊為 Bean。

(2)掃描多個(gè)包

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

2. @MapperScan 的底層原理

  • Spring 啟動(dòng)時(shí),@MapperScan 會(huì)觸發(fā) MapperScannerRegistrar,掃描指定包下的接口。

  • 為每個(gè) Mapper 接口生成代理對(duì)象(通過 JDK 動(dòng)態(tài)代理或 CGLIB),并注冊到 Spring 容器。

  • 代理對(duì)象會(huì)綁定對(duì)應(yīng)的 SQL(XML 或注解方式),執(zhí)行數(shù)據(jù)庫操作。

3. 一定需要@MapperScan嗎?

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

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

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

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

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

(2) 使用 @Mapper 注解標(biāo)記每個(gè) DAO 接口

如果每個(gè) Mapper 接口都添加了 @Mapper 注解(MyBatis 提供的注解),Spring Boot 會(huì)自動(dòng)掃描它們:

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

此時(shí)不需要 @MapperScan,但需確保:

  • 接口所在的包路徑被 Spring Boot 主類默認(rèn)掃描(即與啟動(dòng)類同級(jí)或子包)。
  • 項(xiàng)目中不存在其他沖突配置。

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

(1) 未使用 @Mapper 注解

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

@SpringBootApplication
@MapperScan("com.example.dao") // 指定 DAO 接口所在的包
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

(2) 需要靈活控制掃描范圍

當(dāng) DAO 接口分散在多個(gè)包中時(shí):

@MapperScan({"com.example.dao", "com.another.package.dao"})

當(dāng)需要排除某些接口時(shí)(結(jié)合自定義過濾器)。

到此這篇關(guān)于SpringBoot注解@MapperScan的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot @MapperScan內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring配置動(dòng)態(tài)數(shù)據(jù)源實(shí)現(xiàn)讀寫分離的方法

    Spring配置動(dòng)態(tài)數(shù)據(jù)源實(shí)現(xiàn)讀寫分離的方法

    這篇文章主要介紹了利用Spring配置動(dòng)態(tài)數(shù)據(jù)源實(shí)現(xiàn)讀寫分離的方法,文中通過示例代碼介紹的很詳細(xì),相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,藕需要的朋友可以一起學(xué)習(xí)學(xué)習(xí)。
    2017-01-01
  • Spring MVC Mybatis多數(shù)據(jù)源的使用實(shí)例解析

    Spring MVC Mybatis多數(shù)據(jù)源的使用實(shí)例解析

    項(xiàng)目需要從其他網(wǎng)站獲取數(shù)據(jù),因?yàn)槭桥R時(shí)加的需求,這篇文章主要介紹了Spring MVC Mybatis多數(shù)據(jù)源的使用實(shí)例解析,需要的朋友可以參考下
    2016-12-12
  • springboot+mybatis攔截器方法實(shí)現(xiàn)水平分表操作

    springboot+mybatis攔截器方法實(shí)現(xiàn)水平分表操作

    這篇文章主要介紹了springboot+mybatis攔截器方法實(shí)現(xiàn)水平分表操作,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • Java程序員必備的11大IntelliJ插件(附地址)

    Java程序員必備的11大IntelliJ插件(附地址)

    這篇文章主要介紹了Java程序員必備的11大IntelliJ插件(附地址),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 淺談Maven resrouce下filtering作用

    淺談Maven resrouce下filtering作用

    Filtering是Maven Resources Plugin的一個(gè)功能,本文主要介紹了淺談Maven resrouce下filtering作用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Activiti工作流學(xué)習(xí)筆記之自動(dòng)生成28張數(shù)據(jù)庫表的底層原理解析

    Activiti工作流學(xué)習(xí)筆記之自動(dòng)生成28張數(shù)據(jù)庫表的底層原理解析

    這篇文章主要介紹了Activiti工作流學(xué)習(xí)筆記之自動(dòng)生成28張數(shù)據(jù)庫表的底層原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Java動(dòng)態(tài)線程池插件dynamic-tp集成過程淺析

    Java動(dòng)態(tài)線程池插件dynamic-tp集成過程淺析

    這篇文章主要介紹了Java動(dòng)態(tài)線程池插件dynamic-tp集成過程,dynamic-tp是一個(gè)輕量級(jí)的動(dòng)態(tài)線程池插件,它是一個(gè)基于配置中心的動(dòng)態(tài)線程池,線程池的參數(shù)可以通過配置中心配置進(jìn)行動(dòng)態(tài)的修改
    2023-03-03
  • 簡單說說JVM堆區(qū)的相關(guān)知識(shí)

    簡單說說JVM堆區(qū)的相關(guān)知識(shí)

    今天給大家?guī)淼氖顷P(guān)于Java虛擬機(jī)的相關(guān)知識(shí),文章圍繞著JVM堆區(qū)展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java 5個(gè)人坐在一起(有關(guān)第五個(gè)人歲數(shù)的問題)

    Java 5個(gè)人坐在一起(有關(guān)第五個(gè)人歲數(shù)的問題)

    利用遞歸的方法,遞歸分為回推和遞推兩個(gè)階段。要想知道第五個(gè)人歲數(shù),需知道第四人的歲數(shù),依次類推,推到第一人(10歲),再往回推,需要的朋友可以參考下
    2017-02-02
  • MyBatis中的N+1問題的解決方法

    MyBatis中的N+1問題的解決方法

    本文主要介紹了MyBatis中的N+1問題的四種解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12

最新評(píng)論

南郑县| 会泽县| 堆龙德庆县| 通许县| 永顺县| 淄博市| 无棣县| 余干县| 驻马店市| 磐石市| 犍为县| 宁城县| 陆河县| 葫芦岛市| 石渠县| 松原市| 南雄市| 平遥县| 西乌珠穆沁旗| 旺苍县| 兰坪| 周宁县| 容城县| 育儿| 兴城市| 固原市| 牙克石市| 马关县| 景泰县| 鹤山市| 铜山县| 墨竹工卡县| 九寨沟县| 林西县| 黎平县| 改则县| 休宁县| 镇赉县| 离岛区| 雅江县| 南木林县|