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的包

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

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

相关推荐
Flynt43 分钟前
我试了Spring Boot 4的原生镜像,聊聊那些数字和坑
java·spring boot
凤山老林1 小时前
复杂检索引擎落地:Spring Boot + Elasticsearch 数据同步与高阶查询实战
spring boot·后端·elasticsearch
M-Robots echo8 小时前
轻量化裁剪方案解析:M-Robots 模块化构建,适配高低端各类机器人硬件平台
java·机器人·ros·开源社区·atomgit·m-robots
不可求~9 小时前
多模型路由怎么落地:把任务分流写进项目的最小实现
java·前端·数据库
丶意冷9 小时前
OceanBase 双模式识别与 MyBatis-Plus 分页方言自动切换实战
mybatis·oceanbase
mldong9 小时前
用 DDD 设计工作流引擎:聚合根与充血模型
java·架构
mqiqe10 小时前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言
伍一5110 小时前
03-文件管理模块-一个看似简单的模块藏着多少细节
java·ruoyi·若依
gugucoding11 小时前
46. 【Java】JUC并发工具:让并发更简单
java·开发语言
砍材农夫11 小时前
spring-ai|Spring‑AI 2.0.0 新特性 + 入门教程
spring boot·spring·spring cloud