org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "enterpCd")-Mybatis报错
一、问题由来
下午快要下班时,登录测试服务器查看日志信息,看看有没有新的异常信息,如果有的话好及时修改。结果一看果然有新的异常信息。
主要的异常信息如下:
2020-10-13 14:51:03,036 [http-nio-8091-exec-10] ERROR c.s.f.controller.SmeControllerAdvice 164 - nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'info.enterpCd!=null and info.enterpCd!='''. Cause: org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "enterpCd")
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'info.enterpCd!=null and info.enterpCd!='''. Cause: org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "enterpCd")
心想这又是给自己找活干啊,既然有异常,那就及时改呗。第一步就是找到对应的mapper.xml文件,使用关键字info.enterpCd!=null and info.enterpCd!=''
进行搜索,很快找到了对应的xml文件,原代码为:

异常就是这里抛出来的,一眼看上去也没什么问题啊,怎么就抛异常了呢?
二、问题分析
从抛出的异常信息中可以看出大致意思是说,资源为null。然后立马百度,查看了很多网友的意见,报的错都是一模一样的,由此找到了问题的真正原因;
报这个异常的真正原因是传入的参数info为null,然后在使用null来取值null.enterpCd,因此报了这个异常。因为传入的对象本身就为null,不能再从中取值。
三、解决方案
搞清楚问题的原因后,就很好解决了,在使用这个传入的参数对象时,做一个非空校验即可。先判断这个对象不为null,然后在使用对象里面的属性,
这就就可以避免上面的问题,修改后的代码如下:

拓展.
这个问题在平时写代码的过程中,还真没注意,一般都认为传入XML中的对象参数不可能为null,可现在却实实在在的出现这个问题。
在对这个项目进行改造的过程中,最初的开发人员基本都是按照info.enterpCd!=null and info.enterpCd!=''方式来写的,只能以后遇到
一个修改一个。除了上面说的这种方式会抛出这种异常外,还有一种方式也会抛出同样的异常。比如对象参数A中包含对象参数B,可
是对象参数B为null,使用时没有对对象参数B做非空校验,就直接使用对象参数B中的属性值,这种情况同样会报这个异常。
org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "enterpCd")-Mybatis报错的更多相关文章
- root cause org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "XXX")
在执行一个查询语句的时候,mybatis报错:root cause org.apache.ibatis.ognl.OgnlException: source is null for getProper ...
- Caused by: org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "mil_id")
今天在使用mybatis处理数据库的时候,突然抛出了上述异常,让我感到很惊讶,因为在处理save的时候,在Mybatis的配置文件中,我根本就没有使用到ognl表达式,系统怎么会抛出上述异常.而且之前 ...
- 解决:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression 'requestMap.maintenancename != null and requestMap.maintenance
异常如下:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.Builde ...
- source is null for getProperty(null, "cpmodel")异常结局
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderExce ...
- [mybatis错误] - sql出错 org.apache.ibatis.ognl.ParseException: Encountered "!" at line 1, column 15. Was expecting one of:
完整异常:Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'developerTy ...
- org.apache.ibatis.binding.BindingException: Mapper method 'attempted to return null from a method with a primitive return type (long).
一.问题描述 今天发现测试环境报出来一个数据库相关的错误 org.apache.ibatis.binding.BindingException: Mapper method 'attempted to ...
- java里null强转为某个类会报错吗?
1.定义一个User类如下: /** * @author lizhibiao * @date 2018/11/27 17:21 */public class User{ private String ...
- 解决 Mybatis报错org.apache.ibatis.ognl.NoSuchPropertyException: XXXCriteria$Criterion.noValue
问题 这个noValue一定存在,但是报错. 场景就是存在并发的情况下,尤其是在服务刚刚启动的时候,就会发生这个异常. 但是很不幸,mybatis 3.4.1之前,用的 OGNL都是由这个问题. 分析 ...
- pagehelper调用mybatis报错java.lang.NoSuchMethodError:org.apache.ibatis.reflection.MetaObject.forObject
最近在升新的基础框架到spring cloud,启动时pagehelper报错,如下: java.lang.NoSuchMethodError:org.apache.ibatis.reflection ...
随机推荐
- 三年前买的T440p目前淘宝二手价2300左右
当时可是近六千买的,唉... 有消息说六千多电脑和四千多的区别是多了OEM Windows的价钱,如果一重装,等于把差价抹了... 看来买电脑,买车,买手机都该秉承一个够用就好的原则,不然当时的顶配不 ...
- MyBatis源码骨架分析
源码包分析 MyBatis 源码下载地址:https://github.com/MyBatis/MyBatis-3 MyBatis源码导入过程: 下载MyBatis的源码 检查maven的版本,必须是 ...
- Git 实用基础(配置,建库,提交,推送 GitHub)
Git 实用基础(配置,建库,提交,推送 GitHub) SVN ? Git ? 目前市面上主流的版本控制系统就是 SVN 和 Git . 两者的区别简单通俗地说就是,版本数据是否有在本地. 如果觉得 ...
- Combine 框架,从0到1 —— 4.在 Combine 中使用计时器
本文首发于 Ficow Shen's Blog,原文地址: Combine 框架,从0到1 -- 4.在 Combine 中使用计时器. 内容概览 前言 使用计时器执行周期性的工作 将计时器转换为计时 ...
- React 和 VUE 的区别和优缺点
前言 React 是由Facebook创建的JavaScript UI框架,React推广了 Virtual DOM( 虚拟 DOM )并创造了 JSX 语法.JSX 语法的出现允许我们在 javas ...
- 恭喜!Apache Hudi社区新晋多位Committer
1. 介绍 经过Apache Hudi项目委员会讨论及投票,向Udit Mehrotra.Gary Li.Raymond Xu.Pratyaksh Sharma 4人发出Committer邀请,4人均 ...
- [LeetCode]15. 三数之和(数组)(双指针)
题目 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复的三 ...
- yum 安装提示公钥安装失败,Public key for .x86_64.rpm is not instal 手动导入公钥方案
Linux 中yum 安装google-chrome-stable时,报错如下,提示公钥安装失败,原因是 GPG公钥获取失败,无法连接获取到 https://dl-ssl.google.com/lin ...
- MiniJpegDecoder使用介绍
承接昨天写的<JPEG软解码实现介绍>,今天介绍其使用方法和一些细节说明. 1.仓库下已经包含了几个jpeg文件,以方便直接校验. 2.使用命令分为两种模式. 一种是直接解码为yuv文件, ...
- python语言开发环境配置
原作者:龙行天下-super 地址:https://www.cnblogs.com/longxingtianxia/p/10181901.html 要点:IDLE是一个轻量级python语言开发环境, ...