0


spring中mapper注入的问题!!!一定要仔细细心,避坑!!!

mapper注入所遇到的坑

今天在写项目的时候新建了一个模块,建了新的mapper,controller,service包,在写完代码进行测试的时候报了mapper找不到的错误
截图如下:
在这里插入图片描述
我心想,这报错我熟啊,不就是找不到bean吗,应该是我哪里忘了加注解了,类没有注册到spring容器中,然后我就去排错了
错误提示中有一句:

No qualifying bean of type 'com.valentin.wechat.mapper.WechatMenuMapper' available

思路一下子就清晰了,mapper没有注入,于是我找到mapper类加上了注解(我这里使用的MabatisPlus)
在这里插入图片描述
心想这肯定没问题了吧,于是我点击了运行,结果还是找不到这个bean
我:???
嗷~我明白了spring扫描包的问题,我又去检查了一下之前配置的application.yaml

mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志mapper-locations: classpath:com/valentin/*/mapper/xml/*.xml#mapper路径的位置

很好啊,不需要改啊,这里/mapper/前面的

*

已经把我新建包的结构包括进去了呀,是扫描这些包下的没错啊
当我找了半天没找到的时候我想起来了mapperscan这个注解,之前一直没往这方面想,因为我的mapperscan之前是加在了启动类上,后来转移到mybatisplus配置类上了,我就给忘记了

@Configuration@MapperScan(basePackages ={"com.valentin.auth.mapper","com.valentin.process.mapper","com.valentin.wechat.mapper"})publicclassMybatisPlusConfig{@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptor interceptor =newMybatisPlusInterceptor();
        interceptor.addInnerInterceptor(newPaginationInnerInterceptor(DbType.MYSQL));return interceptor;}/**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置
     * MybatisConfiguration#useDeprecatedExecutor = false
     * 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */@BeanpublicConfigurationCustomizerconfigurationCustomizer(){return configuration -> configuration.setUseDeprecatedExecutor(false);}}

还有就是写代码一定要细心,这样的小问题耽误太多的时间实在是太不应该了,写篇博客引以为戒

之后我把application.yaml中的mapper包的位置注释掉了之后没有报错也运行起来了,只是会有一个警告,提示mapper的路径没有配置
在这里插入图片描述
但是如果我把mapperscan给注释掉只留下yaml中的配置,运行就会找不到mapper

mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 查看日志mapper-locations: classpath:com/valentin/*/mapper/xml/*.xml#mapper路径的位置

是我yaml的mapper路径写错了吗,还是说这个配置并不是这么用的,有没有路过的大神给我解答一下

标签: spring java 后端

本文转载自: https://blog.csdn.net/qq_53082807/article/details/132025095
版权归原作者 诗雨卿 所有, 如有侵权,请联系我们删除。

“spring中mapper注入的问题!!!一定要仔细细心,避坑!!!”的评论:

还没有评论