mybatis中关于ognl表达式冲突怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中关于ognl表达式冲突怎么解决相关的知识,希望对你有一定的参考价值。

表字段‘审核人’简称为shr,与mybatis的OGNL表达式发生冲突。

解决方法:修改冲突的变量名即可。

总结了一下变量命名可能发生冲突的变量集合:

    bor(字符|)的英文         

    xor      字符^的英文       

    and      字符&&     

    band    字符&       

    eq     字符==      

    neq    字符!=     

    lt      字符<    

    gt      字符>    

    lte       字符<=   

     gte    字符>=    

    shl    字符 <<    

    shr    字符>>     

    ushr    字符>>>

参考技术A 在struts2字符串中用%指出,其内部是一个ognl表达式,需要解析。 如 不过有些标签默认认定,整个字符串就是一个表达式,所以不用% 如 在非struts2标签中,是不能用%的,可以用以下方法 ,这是el表达式。 ,这是struts2表达式嵌套用法。 但...本回答被提问者和网友采纳

mybatis 字符串比较失效

参考技术A 在mybatis的mapper.xml中用以下语句判断条件:

实现,当name传入字符串0时,判断name的值

但是在实际运行过程中,这个判断条件并没有生效。

原因:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,'0'会被解析成字符,而java是强类型的,传入的是一个String类型,故而 char和String比较时是不相等的。所以sql中if标签是不会被解析的

解决方法:

一、使用用双引号

二、使用toString()

推荐使用第二种toString方法。

PS:mybatis中的if、when等里面的test条件判断时,被判断的字段可以通过调用java.util.String的方法进行判断,如:

choose标签是按顺序判断其内部的when标签,当某一个when标签满足条件后,则choose标签结束,当所有的when标签都不满足时,则执行最后的otherwise标签

以上是关于mybatis中关于ognl表达式冲突怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

OGNl和ValueStack的基础和深入分析

学习MyBatis必知必会~ OGNL 表达式和EL 表达式

mybatis 之 ognl表达式

Mybatis之动态SQL&OGNL表达式

MyBatis动态SQL

4.mybatis动态SQL拼接/取值/OGNL