解决SpringBoot整合Mybatis扫描不到Mapper的问题
作者:SU坡馒
闲来无事,想学学springboot,开始搭建一个项目,但是一直显示mapper扫描不到的错误:
“Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘userController': Unsatisfied dependency expressed through field ‘userMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.minibike.bike.user.dao.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}”
“Field userMapper in com.minibike.bike.user.controller.UserController required a bean of type ‘com.minibike.bike.user.dao.UserMapper' that could not be found.”
于是在网上找解决方案,都是治标不治本,不得不说现在的博客质量下降的厉害,太误导人了,打开好多个都是一样的内容,难道没人遇到的错误一样,连包名和类名也一样吗?有的人抄别人博客,类名和包名都懒得换一下?
最后解决方案是在Application.java主类上加注解@MapperScan(“com.minibike.bike.user.dao”)。括号中引号里边是mapper所在包路径。
加上注解后不再报错,也能正常输出oooo
第一次接触springboot,昨天下午到今早一直没找到问题所在,后来查文档、注解,然后不断尝试,最后终于解决。
当然这个只是我个人项目开发中遇到的问题解决办法,不一定通用,但是如过遇到这样的问题,也可以一试。
补充知识:springboot 项目配置扫描mapper接口类的两种方法
一种是在启动类上加@MapperScan({"com.**.dao","com.**.dao.*"}) 扫描mapper接口文件所在的包,多个包的时候用英文半角逗号隔开;
一种是在mapper接口文件上加@Mapper注解。如下
import org.apache.ibatis.annotations.Mapper;
以上这篇解决SpringBoot整合Mybatis扫描不到Mapper的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。