MyBatis数据库操作空指针异常

 

有时候,你认为出问题的地方并不是你想的地方。

明明数据库都设置了id自增,xml也做了相关的配置

useGeneratedKeys="true" keyProperty="id"

@Resource
private static AccountMapper accountMapper;

但数据insert依然报空指针异常,控制台很明显可以看出id为null导致的异常,于是静下心来想想,结果发现插入的这个mapper被我放在一个工具类里了,方法设为了静态,所以变量mapper也被设置为static,编译时没有任何问题,但是一跑起来就一直是空指针异常,其实跟MyBatis没啥关系,是因为spring没法注入静态变量,类被加载字节码的时候变量已经初始化了,也就是给该变量分配内存了,导致spring忽略静态变量。所以上面的写法自然就错了。

Spring 依赖注入是依赖set方法,静态变量不属于对象,只属于类。解决方法就是加上非静态的set方法,如下:

private AccountMapper accountMapper;

@Resource
public void setAccountMapper(AccountMapper accountMapper) {
	this.accountMapper = accountMapper;
}

或者在spring的配置文件中配置(说白了也是set方法,都一样)


	

你可能感兴趣的:(框架,持久层框架)