0
点赞
收藏
分享

微信扫一扫

No MyBatis mapper was found in ‘[xx.mapper]‘ package. Please check your configuration.特殊处理

野见 2022-02-12 阅读 89

先直接上处理办法,再述说原因

我的处理方式是:

直接在项目内某个路径下建个接口加上@Mapper注解


特别注意:这个接口不能在@MapperScan注解定义的basePackage路径下

否则即使去除了标题所示的告警,又会出现一个新告警:Skipping MapperFactoryBean with name xxx Bean already defined with the same name!

原因是:

由于启动时,spring boot的默认basePackage会被mybatis-plus的自动配置拿来作为基目录去扫描是否有注解了@Mapper的接口要被注册到spring 容器,如果没有这个注解,则会报[No MyBatis mapper was found in xx]

注意这个接口不能在@MapperScan定义的路径下,如果在虽然是去掉了上面的warn,却会有一个新warn[Skipping MapperFactoryBean with name xx  Bean already defined with the same name]
原因是
当@Mapper 与@MapperScan注解都存在,且@Mapper定义的接口就在@MapperScan定义的接口的basePackage路径下则会产生两次扫描创建bean。
第一次扫描是mybatis-plus的basePackage(会自动取spring boot的应用启动路径作为basePackage)下的@Mapper会注册为bean
第二次扫描是mybatis根据@MapperScan定义的basePackage路径的所有接口都注册为bean,
如果第一次扫描的@Mapper在@MapperScan定义的路径内,第二次扫描会发觉bean已存在,报告警
举报

相关推荐

0 条评论