springboot+mybaties项目中扫描不到@mapper注解的解决方法

该报错表明扫描不到Mapper层。该报错的引起有多种原因,我们一一排除。

第一种:未给对应的Mapper层添加@Mapper注解。导致springboot扫描不到Mapper层。

解决方法:添加@Mapper注解。找到项目中的Mapper层,给该类或者接口加上@Mapper注解即可解决问题。

第二种:如果添加了@Mapper注解之后还是扫描不到Mapper层的话,可能是Mapper层的资源路径冲突或者目录结构有问题。

解决方法:添加@ComponentScan("")注解或者添加@MapperScan("")注解。给启动类添加@ComponentScan("Mapper层路径")或者@MapperScan("Mapper层路径"),这样子可以自定义Mapper层的资源目录。帮助springboot快速定位到Mapper层进行扫描。

两个注解二选一即可。两者的区别是@ComponentScan是定义包扫描的规则,设置扫描包的路径,然后根据定义的规则找出哪些需类需要自动装配到spring的bean容器中,然后交由spring进行统一管理。而@MapperScan 注解用于扫描 Mapper 接口,并将其实例化后交给 Spring 容器管理,使得可以在其他组件中使用这些 Mapper 接口的实现类。该注解常用于 MyBatis 框架中,用于自动扫描 Mapper 接口并创建其实现类的代理对象,从而可以方便地进行数据持久化操作。

第三种:使用自动注入注解@Autowired() 。当使用@Autowired注解的时候,其实默认就是@Autowired(required=true),表示注入的时候,该bean必须存在,否则就会注入失败。这样子会出现启动报错。而@Autowired(required=false):表示忽略当前要注入的bean,如果有直接注入,没有跳过,不会报错。这样子可以正常启动项目。注:这个解决方法只是治标不治本,一般情况下不推荐使用,如果bean启动之后还是不存在的话则一般会出现空指针报错。实际的问题还是没有对应解决。

第四种:依赖引入错误。

解决方法:检查对应pom文件的依赖。删除错误的依赖即可。

两者的区别:

mybatis:只会单单引入mybatis的包

mybatis-spring-boot-starter:会引入spring-boot的启动包和mybaits的包

这也是启动类启动的时候找不到相关依赖出现报错的原因。

大家可以根据自己项目的情况慢慢的排除错误解决问题。一步步来问题完美解决。项目完美启动。

相关推荐
wbs_scy35 分钟前
Linux C++ 高并发编程:线程池全链路深度解析,从原理到手撕实现
java·开发语言
JAVA面经实录91737 分钟前
Linux 常用命令完整知识体系
java·linux·开发语言·汇编
Full Stack Developme2 小时前
Java LRU 与 LFU 算法及应用
java·开发语言·算法
程序员老油条4 小时前
WSL2 + Docker Desktop:Windows 下的完美 Java 开发环境
java·windows·docker·wsl2
shushangyun_5 小时前
2026智能采购商城系统选型指南:如何引领企业数字化采购升级
java·大数据·数据库·人工智能·机器学习
她说..5 小时前
Java 默认值设置方式
java·开发语言·后端·springboot
学渣超6 小时前
记一次分布式事务数据不一致的排查之旅:从超时到索引,层层剥茧
java·后端·架构
掉鱼的猫6 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·llm·aigc
带刺的坐椅6 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·ai·llm·agent·solon-ai
c238566 小时前
互斥锁高频面试题全解:从基础概念到底层实现,一文通关
java·c++·面试·职场和发展