Mybatis java.lang.NullPointerException可能的解决办法

18 篇文章 0 订阅

写在前面

在Spring MVC框架结构中,总是会遇到各种各样的异常,而Mybatis java.lang.NullPointerException应该算是最常遇到的吧。下面介绍一下我在项目中面对这个异常的解决办法。

Mybatis java.lang.NullPointerException

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.NullPointerException
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### Cause: java.lang.NullPointerException
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:360)
at com.sun.proxy.$Proxy17.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:183)

步骤一:开通打印SQL语句

因为是通过MyBatis 连接数据库,所以需要查看SQL的执行语句

Spring+Mybatis在控制台输出SQL的最简单方法:

在application.properties文件中添加:

logging.leve.你的Mapper所在的包=debug (如果你的Mapper包在com.demo.mapper就填这个)


步骤二:检查SQL里的字段

  • SQL里的字体要与实体类的成员变量相对应,大小写也要注意
  • 注意区分属性ResutlMap和ResultType的使用,别混了。

步骤三:检查数据库的字符编码

数据库、表、字段的字符编码都应该统一,最好设置成utf8-general_ci


步骤四:检查Mapper是否注入成功

@Autowire报错导致的NullPointerException,虽然报错,项目运行没有问题。可是只有紧挨着@Autowire的一个起作用,下面的都没有注入成功。这时需要在每一个注入的Mapper中都加上@Autowire。


步骤五:List All elements are null导致NullPointerException

当List对象显示 All elements are null时,虽然输入为[null],但是list.size()=1。不管是list==null,list.isEmpty(),list.size()都无法判断list是否为空。

可以在执行上面语句时,加上list.remove(null)

 

 

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值