mybatisplus报shr错误,OGNL表达式问题BuilderException: Error evaluating expression ‘shr != null‘

在使用Mybatis-Plus3.x版本保存数据时,由于字段shr与OGNL表达式产生冲突导致报错。经过检查和分析,发现是实体类字段shr与Mybatis的OGNL表达式解析产生问题。解决方法是修改实体类的字段命名,避免与OGNL的关键字冲突,使用@TableField注解进行字段映射。

使用Mybatis-Plus3.x版本时,普通的保存数据控制台报异常,大致如下

Caused by: org.apache.ibatis.builder.BuilderException: Error evaluating expression 'shr ! = ''and  shr !=null'. Cause: org.apache.ibatis.ognl.ExpressionSyntaxException: Malformed OGNL expression: 'shr ! = ''and  shr !=null'[org.apache.ibatis.ognl.ParseException: Encountered " "shr"
Was expecting one of:
    <EOF> 
    "," ...
    "=" ...
    "?" ...
    "||" ...
    "or" ...
    "&&" ...
    "and" ...
    "shr" ...

二、思考

首先想的是自己业务代码以及数据库字段是否存在问题,仔细检查了一遍发现并没有问题。然后仔细观察异常,发现其中有个关键字shr,全局搜索了下,正好是实体类字段shr(审核人)。此时大致可以猜测问题出现在了这个字段上。

三、解决

查阅了相关文档,发现与shr字段与mybatis的OGNL表达式发生冲突,因此这个坑是mybatis带来的。在网上察看了OGNL表达式的setValue方法的源码后,总结了一下变量命名可能发生冲突的变量集合。

最终解决办法是修改实体类命名,修改实体类与数据库字段映射,mybatisPlus可直接使用@tableField(value="xxx")注解即可。

   @TableField(value = "shr")
    private String checker;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值