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

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

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

相关推荐
迷枫71234 分钟前
SQL性能排查记录
java·数据库·sql
渡我白衣1 小时前
深入理解 Transformer:Transformer 究竟是什么?
java·linux·开发语言·c++·人工智能·深度学习·transformer
Tisfy3 小时前
LeetCode 1927.求和游戏:抵消+看最值
java·leetcode·游戏·题解·博弈论
秋饼10 小时前
JDK 27 企业级 AI 服务落地实战:G1 默认、紧凑对象头、后量子 TLS 与 JFR 脱敏全解析
java·ai·技术分享·后端开发
卓怡学长10 小时前
w176基于SpringBoot的医院管理系统
java·spring boot·spring·maven·intellij-idea
lemon_sjdk10 小时前
ObjectProperty
java·开发语言·算法
hh95011 小时前
Agent Plan x DeepSeek Harness:Agent 供应链安全与第三方插件审计
java·开发语言·安全·agent plan·adg成都社区·adg社区
吴声子夜歌11 小时前
Java面试——HBase原理及应用
java·面试·hbase
浪兎兎11 小时前
【Java Web】Servlet + JSP 笔记
java·前端·servlet
吴声子夜歌11 小时前
Java面试——ElasticSearch原理及应用
java·面试·es