mybatis报shr错误,OGNL表达式问题BuilderException: Error evaluating expression 'shr

家住魔仙堡 提交于 2020-08-13 17:00:30

使用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(审核人)。因为是个5年前的项目,所以也没有吐槽数据库命名规范了。此时大致可以猜测问题出现在了这个字段上。

三、解决

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

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

   @TableField(value = "shr")
    private String checker;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!