SpringBoot + MybatisPlus:mapper注入为null

简介: 问题描述Service类中自动注入一个mapper,运行后发现注入失败无法使用。@Componentpublic class KeyService {    @Resource    XXXKeyMapper xXXKeyMapper;    ...}@Mapperpublic interface XXXKeyMapper extends BaseMapper<Object

问题描述

Service类中自动注入一个mapper,运行后发现注入失败无法使用。

@Component
public class KeyService {

    @Resource
    XXXKeyMapper xXXKeyMapper;

    ...
}
@Mapper
public interface XXXKeyMapper extends BaseMapper<Object>{

    List<String> queryByAk(String ak); // 具体方法用同名xml中的sql语句实现

}

排查:mapper.java和mapper.xml的目录

mapper.java和mapper.xml需要有相同的path from source root,例如:

mapper.java:com/aliyun/{department}/{project}/{module}/mapper/XXXKeyMapper.java

mapper.xml:com/aliyun/{department}/{project}/{module}/mapper/XXXKeyMapper.xml

排查:mapper.xml的namespace

namespace出错时会在编译时报错Error while adding the mapper xxx to configuration.

namespace应该指向mapper.java的reference path

排查:application中的@MapperScan

如果运行时没有指定扫描该mapper的路径则也会出现找不到bean的情况,需要在application的注解中加上

@MapperScan(value = {"com.aliyun.{department}.{project}.{module}.mapper*"})

排查:待注入Mapper类的新建方式

使用反射class.newInstance()获取实例时,实例中的@Autowired无法自动注入,因为反射与Spring的IOC容器无关,所以应该改为KeyService service = applicationContext.getBean(KeyService.class)

好了虽然看起来是个弱智的bug但是因为新建实例的逻辑在二方库里而mapper在应用里,所以排查起来只想到了mapper这边,查了好久才想到新建实例这边也可能有问题,只能说debug时间越长,bug越让人无语。。。。。

目录
相关文章
|
1月前
|
XML Java 开发者
Spring Boot中的bean注入方式和原理
Spring Boot中的bean注入方式和原理
52 0
|
2月前
|
SQL Java 关系型数据库
SpringBoot整合MybatisPlus
SpringBoot整合MybatisPlus
29 0
|
1月前
|
druid Java 数据库连接
Spring Boot3整合MyBatis Plus
Spring Boot3整合MyBatis Plus
45 1
|
16天前
|
Java 测试技术
SpringBoot整合单元测试&&关于SpringBoot单元测试找不到Mapper和Service报java.lang.NullPointerException的错误
SpringBoot整合单元测试&&关于SpringBoot单元测试找不到Mapper和Service报java.lang.NullPointerException的错误
19 0
|
5天前
|
Java Spring 容器
SpringBoot 使用Quartz执行定时任务对象时无法注入Bean问题
SpringBoot 使用Quartz执行定时任务对象时无法注入Bean问题
10 1
|
15天前
|
存储 关系型数据库 MySQL
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
【mybatis-plus】Springboot+AOP+自定义注解实现多数据源操作(数据源信息存在数据库)
|
23天前
|
Java
SpringBoot中静态类使用配置文件经常遇到读取为NULL的情况,现在我就告诉大家。
SpringBoot中静态类使用配置文件经常遇到读取为NULL的情况,现在我就告诉大家。
9 0
|
28天前
|
Java fastjson Apache
Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架
30 1
|
1月前
|
Java 关系型数据库 MySQL
springboot+mybatis-plus实例demo
springboot+mybatis-plus实例demo
28 0
|
1月前
|
SQL Java 关系型数据库
MyBatisPlus学习笔记(SpringBoot版)
MyBatisPlus学习笔记(SpringBoot版)
99 0