指针异常"/>
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方法,都一样)
更多推荐
MyBatis数据库操作空指针异常
发布评论