java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot mybaties扫描不到@mapper

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

作者:莫小钻

本文主要介绍了springboot+mybaties项目中扫描不到@mapper注解的解决方法,该报错表明扫描不到Mapper层,具有一定的参考价值,感兴趣的可以了解一下

本文主要介绍了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的包

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

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

项目完美启动。

到此这篇关于springboot+mybaties项目中扫描不到@mapper注解的解决方法的文章就介绍到这了,更多相关springboot mybaties扫描不到@mapper内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文