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

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

我的处理方式是:

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

No MyBatis mapper was found in ‘[xx.mapper]‘ package. Please check your configuration.特殊处理_第1张图片


特别注意:这个接口不能在@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定义的路径下,如果在,即使去掉了【No Mybatis Mapper was found】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已存在,报告警

你可能感兴趣的:(java,intellij-idea,spring)