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方法,都一样)

<bean value="test" class="x.x.x.Util">
	<property value="accountMapper" ref="accountMapper"/>
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值