在SpringBoot项目中,如果使用了MyBatis作为持久层框架,使用自动注入时可能会遇到mapper报空指针异常的问题。这是因为在自动注入时,SpringBoot无法正确识别MyBatis的Mapper接口,需要进行一些额外的配置。
解决这个问题的方法有两种:

1.在Mapper接口上添加注解
在Mapper接口上添加@Mapper注解,告诉SpringBoot这个接口是一个Mapper接口,需要进行代理。示例如下:

@Mapper
public interface UserMapper {
    // ...
}

2.手动配置Mapper扫描路径
在application.properties或application.yml中手动配置Mapper扫描路径,告诉SpringBoot扫描哪些包下的Mapper接口。示例如下:
在application.properties中配置:

mybatis.mapper-locations=classpath:mapper/*.xml

在application.yml中配置:

mybatis:
  mapper-locations: classpath:mapper/*.xml

需要注意的是,这里的mapper/*.xml是指Mapper接口所对应的XML文件存放的路径,如果使用注解方式配置SQL语句,则可以不用配置XML文件路径。
通过以上两种方式进行配置后,就可以在使用自动注入时正确注入Mapper接口了。

最后,如果以上的都做了还是报空的话检查一下是不是粗心的在controller层没有注入mapper,例如
在这里插入图片描述
如果是新new的对象的话引用的注入对象不是自动注入spring容器里的对象,所以会报空,演戏也要演全套,在controller层也使用@Autowird注入吧

如果觉得文章对你有用就点个关注一起coding吧!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐