SpringBoot 整合 Mybatis 關於 MapperScan掃描接口的問題

在SpringBoot中咱們配置Mybatis的掃描是很簡單的,最簡單粗暴的方法是直接在類上註解 @MapperScan("你的項目根包"),java

而後你就會驚喜的發現,Mybatis幫你把全部的接口都作了一個動態代理...爲全部的接口都作了一個實現類,無差異攻擊。spring

這是由於,Mybatis的默認機制是會對MapperScan中basePackage包下的全部接口都生成一個代理實現類。apache

具體解決方案和緣由參考這哥們的文章: https://blog.csdn.net/qq523786283/article/details/61916279mybatis

不過這哥們的配置是基於xml的,app

我這裏給出一個SpringBoot的解決方案(其實也是換湯不換藥,由Xml變爲javaConfig而已):.net

import org.apache.ibatis.annotations.Mapper;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class mybatisConfig {
    @Bean
    public MapperScannerConfigurer getMapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        //這裏我特意換成了Mapper 這樣你就能夠儘可能遵循官方的規範 使用mapper註解標識你的Mapper類,同時還能夠避免其餘的非Mapper接口被無差異掃描
        mapperScannerConfigurer.setAnnotationClass(org.apache.ibatis.annotations.Mapper.class);
        mapperScannerConfigurer.setBasePackage("改爲你本身的包路徑");
        return mapperScannerConfigurer;
    }
}
相關文章
相關標籤/搜索