完整的报错是这样的:

“error”: “Internal Server Error”,
“trace”: "org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘checkin.adminVo.wname != null and checkin.adminVo.wname != ‘’’. Cause: org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, “wname”)\r\n\tat

我们使用mybatis编写动态sql的时候,可能会遇到这种场景,在实体类中包含了实体类:


/** @author 小爽帅到拖网速* @since 2021-11-17*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_checkin")
@ApiModel(value="Checkin对象", description="")
public class Checkin implements Serializable {@ApiModelProperty(value = "学生")@TableField(exist = false)private StudentVo studentVo;@ApiModelProperty(value = "员工")@TableField(exist = false)private AdminVo adminVo;}

在写动态sql 的时候,势必会运用到实体类中实体类的属性,我上面的报错是因为我在mapper.xml中的动态sql是这样写的

 <if test="checkin.studentVo.gender != null and checkin.studentVo.gender != ''">and s.gender = #{checkin.studentVo.gender,jdbcType=VARCHAR}</if>
<if test="checkin.adminVo.wname != null and checkin.adminVo.wname != ''">and a.wname like concat('%', #{checkin.adminVo.wname,jdbcType=VARCHAR})
</if>

如果动态sql这么写了,参数studentVo为空的时候gender势必也为空,所以我们不能够去这么写

正确代码:

<if test="checkin.studentVo != null"><if test="checkin.studentVo.gender != null and checkin.studentVo.gender != ''">and s.gender = #{checkin.studentVo.gender,jdbcType=VARCHAR}</if>
</if>
<if test="checkin.adminVo != null"><if test="checkin.adminVo.wname != null and checkin.adminVo.wname != ''">and a.wname like concat('%', #{checkin.adminVo.wname,jdbcType=VARCHAR})</if>
</if>

多加一层判断实体类是否为空即可!

Cause: org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, \“wname\“)\r\n\ta相关推荐

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

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

  2. 错误记录(11): source is null for getProperty(null, name)

    使用SSM框架做项目时,使用到了XML中的判断条件查询方式,代码如下: <if test="machineInfo.name != null and machineInfo.name ...

  3. Mybatis org.apache.ibatis.ognl.NoSuchPropertyException:xxx问题解决

    问题描述: org.apache.ibatis.ognl.NoSuchPropertyException: com.entity.UserEntity.createDate 问题分析: 1.UserE ...

  4. sql报错,org.apache.ibatis.ognl.ParseException: Encountered “ <IDENT> “AND ““

    在一个风和日丽的下午,我照常写着代码,但是在一次自测接口时,发现了一个报错.提示如下: 当时有点懵. <select id="selectCompanySample"> ...

  5. mybatis org.apache.ibatis.ognl.ParseException: Encountered “ <IDENT> “AND ““ at line 1, column 14.

    mybatis中if判断的and 要小写,大写报错的原因 <if test="(personName != null and personName!='') || (companyNa ...

  6. Caused by: org.apache.ibatis.ognl.TokenMgrError: Lexical error at line 1, column 43. Encountered: <

    前言 报错 错误信息 [2020-12-15 13:56:33] -- [INFO ]: [com.xxxx.phb.exception.ExceptionHandlerAdvice]<

  7. Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression ‘dept.name

    Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'dept.name != nul ...

  8. Caused by: org.apache.ibatis.reflection.ReflectionException我碰到的情况,原因不唯一

    映射文件: <select id="selectKeyByUserId"  resultMap="Xxx">         <![CDATA ...

  9. Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no gette

    这里写自定义目录标题 问题起因 错误码代码如下: step 1 问题起因 很简单的id和where mapper标签的使用不知道为什么突然出现无null1getter错误 错误码代码如下: org.a ...

最新文章

  1. 设计模式——控制反转依赖注入
  2. mysql搜索规则_MySQL基于规则优化
  3. 《网球王子》与阿梅尔
  4. mycat mysql 物理部署_一、MyCat的搭建
  5. 计算机操作系统稳定性的因素有哪些,计算机操作系统期末重点复习汇编.docx
  6. 三位数倒序数C语言,C语言求助!一个三位数的逆序数,总是编不对
  7. bootstrap4 后台管理模板_开源的后台管理模板
  8. php 改变页面元素,动态更改网页HTML元素(对象)内容_经验交流
  9. 单位计算机安全和保密措施,安全管理及保密措施
  10. 【ANSYS命令流】定义单元类型与实常数
  11. 中兴新支点国产操作系统下载安装WPS办公软件,好用无广告
  12. python爬贴吧回复_Python爬虫实践,获取百度贴吧内容
  13. C语言期末复习题(带答案)
  14. 网络协议之一(ICMP)
  15. 【Unity】监听编辑器聚焦/激活状态OnEditorFocus
  16. C++八股文分享---数据结构其二---哈希表
  17. vue页面中el-carousel轮播页面或图片
  18. 野火STM32学习(7)
  19. 卡西欧计算机的闹铃怎么取消,卡西欧如何关闭闹钟
  20. 刘雪峰卷积神经网络,刘雪峰老师哪里人

热门文章

  1. 常用计算机视觉库,各种常用计算机视觉库
  2. 从艺赛旗iS-RPM,看国产流程挖掘产品的发展与特性
  3. 接口测试系列之--前端交互测试和后端逻辑测试
  4. WIN10下DOCKER的安装与使用
  5. MultiSim电路仿真之受控源的使用
  6. 联通的无限流量套餐,比移动好很多
  7. SQL Server 2019企业版和标准版的区别?
  8. Android 动态改变SeekBar进度条颜色与滑块颜色
  9. 车载wince升级改造_想在低配车内蹦迪?改造车机还不如装个接收器,也就一顿饭钱...
  10. linux 下生成docx,linux下创建、删除文件和文件夹命令.docx