@Mapper使用问题

langH 发布于 2019/12/18 14:56
阅读 618
收藏 1

springboot注入mapper的两种方法:

1.mapper接口添加@Mapper    2.启动类添加@MapperScan

问题:单独添加@MapperScan或者两个都添加可以注入成功,但是在mapper接口单独添加@Mapper会注入不成功,不是接口上面添加了@Mapper就会自动注入吗?

加载中
0
炎黄伙哥
炎黄伙哥

只使用@Mapper也是可以自动注入的,但这个时候需要保证你的接口在spring boot主类同目录或下级目录.原理楼上说的没错,就是扫描一个特定范围,在这个范围内可以用@Mapper或其他注解作为过滤器,但mybatis提供了两种方式,一种是@MapperScan,通常使用他是直接指定扫描范围,较少指定过滤器,还有一个是默认扫描spring boot主类所在目录包括下级目录,此时mybatis已经写死了把@Mapper注解作为过滤器,所以这时候必须使用@Mapper

炎黄伙哥
炎黄伙哥
回复 @langH : 就算是子项目,包名也是可以跟主类一致的
langH
langH
那多模块项目接口跟主类不同模块就只能用@MapperScan不能用@Mapper ,是这个意思吗?
0
Soi
Soi

建议看看https://www.bilibili.com/video/av64870581?p=1

0
SpringBoot中文社区
SpringBoot中文社区

接口上面添加了@Mapper不会自动注入。需要通过 @MapperScan 指定扫描的路径。

langH
langH
单独使用@MapperScan就能注入,那@Mapper有什么作用吗?
0
SpringBoot中文社区
SpringBoot中文社区

回复 @langH : @Mapper 只是由mybatis提供的一个注解。没任何特殊的作用。

@MapperScan 有个属性,叫做:annotationClass 。如果没指定这个属性,那么会把指定包下的所有接口都当作mybatis的mapper接口。。。但是有时候我们需要过滤掉一些mapper,不让mybatis加载。于是就可以通过 annotationClass  来指定一个注解,表示仅仅加载标识了指定注解的接口。仅此,而已。你要是开心,你可以用其他的任何注解代替 @Mapper ,一样的。

langH
langH
好的,谢谢
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部