当在使用IDEA时,当使用的是Mybatis-plus时,在service中注入mapper时可能会遇到这样的问题:明明代码没有问题,可以运行,但是IDEA却给出了错误提示,显示红色波浪线,让人感到不舒服。这种情况的原因是什么呢?IDEA具有智能识别Spring上下文的能力,但是对于像 XxxxMapper 这样的接口(一般是Mybatis的)却无法理解。此外,@Autowired 注解默认要求依赖对象(比如 XxxxMapper)必须存在,而IDEA却认为这个对象的实例或者代理是null,因此会友好地给出警告提示。
针对这个问题,有几种解决方案:
1.为 @Autowired 注解设置 required = false
@Autowired(required = false)
private TestMapper testMapper;
这样就不会再有警告了。原理是通过设置 required = false,告诉IDEA不再校验 cashTicketMapper 的存在与否,从而消除警告。
2.使用 @Resource 替换 @Autowired
@Resource
private TestMapper testMapper;
这种方式也能消除警告,不过如果项目大量使用@Autowired,需要改成@Resource可能比较繁琐。
3.在Mapper接口上加上 @Repository 注解
@Repository
public interface TestMapper {
// Mapper接口方法
}
这样也能消除警告,原理是通过@Repository注解或者@Component注解让IDEA认可该接口,不再提示错误。
4.使用Lombok
@Service
@RequiredArgsConstructor
public class TestService {
private final TestMapper TestMapper;
}
Lombok生成的代码可以帮助消除警告,但如果手动写等效的Lombok代码,可能依然会出现警告,这可能是IDEA的Lombok插件的问题。
5.关闭IDEA的警告:
虽然这是一种方法,但不推荐,因为警告对于代码的规范性和可读性有一定帮助。
以上就是解决IDEA注入mapper时报错的几种方法,希望对你有所帮助。