在用Idea写一个实现类时引用了mapper类的来调用dao层的处理,使用@Autowired注解时被标红线,找不到bean。
解决办法:
在mapper加注解@mapper
或者@repository
。
这两种注解的区别在于:
1、使用@mapper
后,不需要在Spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,Spring将动态的生成Bean后注入到ServiceImpl中。
@Mapper public interface BlogSortMapper { int deleteByPrimaryKey(String sortId); int insert(BlogSort record); }
2、@repository
则需要在Spring中配置扫描包地址,然后生成dao层的bean,之后被注入到ServiceImpl中,如下面的Mapper扫描注解:@MapperScan
@MapperScan("com.wenjianbao.mapper") @SpringBootApplication(scanBasePackages = "com.wenjianbao") public class RunApplication { public static void main(String[] args) { SpringApplication.run(RunApplication.class, args); } }
@Repository public interface BlogMapper { int deleteByPrimaryKey(Integer id); int insert(Blog record); }
即:
@repository
和@MapperScan
是需要成对配合使用的,,,推荐使用注解@mapper