一、问题由来

下午快要下班时,登录测试服务器查看日志信息,看看有没有新的异常信息,如果有的话好及时修改。结果一看果然有新的异常信息。

主要的异常信息如下:

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报错的更多相关文章

  1. 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 ...

  2. Caused by: org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, "mil_id")

    今天在使用mybatis处理数据库的时候,突然抛出了上述异常,让我感到很惊讶,因为在处理save的时候,在Mybatis的配置文件中,我根本就没有使用到ognl表达式,系统怎么会抛出上述异常.而且之前 ...

  3. 解决: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 ...

  4. source is null for getProperty(null, "cpmodel")异常结局

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderExce ...

  5. [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 ...

  6. 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 ...

  7. java里null强转为某个类会报错吗?

    1.定义一个User类如下: /** * @author lizhibiao * @date 2018/11/27 17:21 */public class User{ private String ...

  8. 解决 Mybatis报错org.apache.ibatis.ognl.NoSuchPropertyException: XXXCriteria$Criterion.noValue

    问题 这个noValue一定存在,但是报错. 场景就是存在并发的情况下,尤其是在服务刚刚启动的时候,就会发生这个异常. 但是很不幸,mybatis 3.4.1之前,用的 OGNL都是由这个问题. 分析 ...

  9. pagehelper调用mybatis报错java.lang.NoSuchMethodError:org.apache.ibatis.reflection.MetaObject.forObject

    最近在升新的基础框架到spring cloud,启动时pagehelper报错,如下: java.lang.NoSuchMethodError:org.apache.ibatis.reflection ...

随机推荐

  1. Redis windows版安装测试

    1.下载 下载地址是 https://github.com/microsoftarchive/redis/releases/tag/win-3.2.100 ,我选择的是Redis-x64-3.2.10 ...

  2. springboot2.x基础教程:自动装配原理与条件注解

    spring Boot采用约定优于配置的方式,大量的减少了配置文件的使用.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置. 当springboot启动的时候,默认在容器中注入 ...

  3. spring cloud 通过zuul网关去请求的时候报404的几个原因。

    spring cloud 中 zuul 网关的那些坑: 1.检查你的服务是否正常启动. 2.检查你的服务是否正常注册到注册中心. 3.zuul网关的路由规则是会把你注册在注册中心的serviceId ...

  4. Solr专题(四)Solr安全设置

     因为solr的admin界面默认只需要知道ip和端口就能直接访问,如果被别有用心的人盯上就很容易给你的系统带来重大的破坏,所以我们应该限制访问. 请注意本例使用的是Solr7. Solr集成了以下几 ...

  5. Mybatis注解开发案例(入门)

    1.创建maven工程,配置pom.xml 文件. 2.创建实体类 3.创建dao接口 4.创建主配置文件SqlMapConfig.xml 5.在SqlMapConfig.xml中导入外部配置文件jd ...

  6. Docker添加TLS认证修复2375端口暴露引发的漏洞

    #### 1.环境准备 ```bash# 查看Docker服务器主机名hostnamectl``` ![1582697962553](C:\Users\86176\AppData\Roaming\Ty ...

  7. 部署cobbler服务器

    部署cobbler服务器 1.准备环境使用nat或者仅主机模式,不要使用桥接模式,方式获取的IP不是自己的 2. 配置yum源[epel]name=epelenabled=1gpgcheck=0bas ...

  8. [go语言]-深入理解singleflight

    目录 前言 singleflight使用场景 singleflight 简介 singleflight的使用 从singleflight的test最简单用法 验证并发重复请求 singleflight ...

  9. BTRsys1~2系列靶机渗透

    BTRsys系列靶机渗透 BTRsys1 端口发现加目录扫描. 发现目录:http://192.168.114.161/login.php 尝试弱密码失败,查看源代码. <script type ...

  10. sql 注入初探

    Sql注入:就是将恶意的sql语句插入到用户输入的参数当中并带入数据库中查询并在浏览器返回不该显示的信息 寻找sql注入点: 1.要有参数值的传递(url当中GET型的.注册用户名的页面.登录框.留言 ...