UnsatisfiedDependencyException: Error creating bean with name
报错信息:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.xubo.mybatisplus.MyBatisPlusTest': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.xubo.mybatisplus.mapper.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
问题原因:
这是因为启动类上没有加mapperscan;扫描不到对应的类。
在启动类上加上 @MapperScan(“com…*.dao”);问题迎刃而解!
我自己实际问题是加上了,但是我写的是具体类的路径,带类名的,这样不行,必须写包名.改成包名就启动成功查询数据了.
@MapperScan作用:指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
添加位置:是在Springboot启动类上面添加
下面这段这个是搜索的时候看到的,不知道正确性.
springboot启动类位置,如果没有错的话,应该是可以直接扫描到对应注解的,所以我在网上查遍了各种方法,历经两个多小时,我无意之中研究出来,springboot启动类的位置除了第一原则,只扫描所在的同级目录和子目录的注解之外,同时启动类距离目录java,至少要隔开两层的包