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 ...
随机推荐
- 02 axios
request.js import axios from 'axios' const config = require('@/config') const instance = axios.creat ...
- 小程序开发-小程序tabBar不显示的原因分析
在尝试小程序开发时,tabBar这个是个非常常见的组件,但是今天在进行开发时,设置了TabBarb并没有显示,被这个问题困扰了近半小时,现在将排查问题后所得到的经验记录下来. 首先 如果tabBar不 ...
- Oracle中创建千万级大表归纳
从一月至今,我总共归纳了三种创建千万级大表的方案,它们是: 下面是这三种方案的对比表格: # 名称 地址 主要机制 速度 1 在Oracle中十分钟内创建一张千万级别的表 https://www.cn ...
- 性能测试1:loadrunner介绍及代理录制
一.安装loadrunner lr安装环境要求: Lr11只支持ie9及一下,火狐30以下,不支持chrome. 操作系统只支持到win7.Lr打开时必须用管理员身份打开 在虚拟机中安装的win7, ...
- redhat中的RHCS双机配置
1. 主机概述 主机名 主机IP 备注 node1 192.168.1.101 模拟fence设备 node2 192.168.1.102 rhcs双机节点 node3 192.168.1.103 r ...
- CTF-BugKu-WEB-1-20
2020.09.17 全面复习web,给自己定个目标,后天之前结束BugKu-Web,开始逆向. 经验教训 php弱等于用于绕过==,弱等于之前会把等号两边转化为同一类型变量: 全局变量全局变量全局变 ...
- 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta
从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Javax,Jakarta 目录 从一次编译出发梳理概念: Jetty,Jersey,hk2,glassFish,Jav ...
- zookeeper源码之服务端
zookeeper服务端主要包括一下几个模块: 1.启动模块. 2.核心执行模块 3.数据管理模块. 启动模块 读取配置文件,启动程序.详见:zookeeper源码之服务端启动模块. 核心执行 ...
- archaius(1) 概述
archaius作为配置管理工具,内部主要定义了下几个模块: 配置源 配置源的主要功能是将配置从目标位置加载到内存中.详见:archaius源码分析之配置源 配置管理器 配置管理器的主要功能是管理内存 ...
- 谈谈 Java 中的那些“琐”事
一.公平锁&非公平锁 是什么 公平锁:线程按照申请锁的顺序来获取锁:在并发环境中,每个线程都会被加到等待队列中,按照 FIFO 的顺序获取锁. 非公平锁:线程不按照申请锁的顺序来获取锁:一上来 ...