mybatis註解之@Mapper和@MapperScan的使用

mybatis註解之@Mapper和@MapperScan

在使用Mybatis持久層框架來操作數據庫時,我們可以使用@Mapper註解和@MapperScan註解來將Mapper接口類交給Sprinig進行管理。

方式一:使用@Mapper註解

優點:粒度更細

缺點:直接在Mapper接口類中加@Mapper註解,需要在每一個mapper接口類中都需要添加@Mapper註解,較為繁瑣

方式二:使用@MapperScan註解

通過@MapperScan可以指定要掃描的Mapper接口類的包路徑

@SpringBootApplication  
@MapperScan("com.erayt.mapper")  
public class App {  
    public static void main(String[] args) {  
       SpringApplication.run(App.class, args);  
    }  
}  

在路徑中可以使用 * 作為通配符對包名進行匹配

@SpringBootApplication  
@MapperScan("com.erayt.*.mapper")  
public class App {  
    public static void main(String[] args) {  
       SpringApplication.run(App.class, args);  
    }  
}  

​ 也可以使用@MapperScan註解對多個包進行掃描

@SpringBootApplication  
@MapperScan("com.erayt.mapperFirst","com.erayt.mapperSecond")  
public class App {  
    public static void main(String[] args) {  
       SpringApplication.run(App.class, args);  
    }  
}  

@MapperScan和@Mapper區別及理解

作用

掃描項目中的Dao層,將dao接口類註入到Spring,能夠讓其他類進行引用;

  • @Mapper:在dao接口類中,添加此註解;麻煩的在於,每個dao接口類都必須添加此註解;
  • @MapperScan:可以指定要掃描的dao接口類的路徑,可以在啟動類中添加此註解,可替代@Mapper註解(此模塊內dao接口類不用都添加@Mapper註解)

掃描一個包

  • @MapperScan("com.demo.mapper"):掃描指定包中的接口
  • @MapperScan("com.demo.*.mapper"):一個 * 代表一級包;比如可以掃到com.demo.aaa.mapper,不能掃到com.demo.aaa.bbb.mapper
  • @MapperScan("com.demo.**.mapper"):兩個 * 代表任意個包;比如可以掃到com.demo.aaa.mapper,也可以掃到com.demo.aaa.bbb.mapper

掃描多個包

如果dao接口類在主程序可以掃描的包或者子包下面:

@MapperScan({"com.kfit.demo","com.kfit.user"}) 

如果沒有,可以使用如下方式進行配置:

@MapperScan({"com.kfit.*.mapper","org.kfit.*.mapper"})  

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: