美文网首页
OGNL表达式定义字符串常量 与单个字符常量使用问题

OGNL表达式定义字符串常量 与单个字符常量使用问题

作者: 赵优秀 | 来源:发表于2021-12-24 17:28 被阅读0次

    错误写法:

    <if test="m.flag == '0'">
                    DISTINCT DATE_FORMAT(A.readdate, '%T') readdate
     </if>
    

    正确写法1: 单引号转双引号

    <if test='m.flag == "0" '>
                    DISTINCT DATE_FORMAT(A.readdate, '%T') readdate
     </if>
    

    正确写法2: toString()

    <if test="m.flag == '0'.toString()">
                    DISTINCT DATE_FORMAT(A.readdate, '%T') readdate
     </if>
    

    原因:

    mybatis是用OGNL表达式来解析的,在OGNL的表达式中,单引号里单个字符会被解析成char类型(多个字符是可以的),java是强类型的,char 和一个string 会导致不等
    
    

    OGNL表达式相关的知识点:

    OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,让你通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能。

    OGNL支持的所有常量类型:

    1、字符串常量:
    以单引号或双引号括起来的字符串。如”hello”,’hello’。
    注意,如果是单个字符的字符串常量,必须使用双引号。
    2、字符常量:
    以单引号括起来的字符。如’a'。
    3、数值常量:
    除了Java中的int、long、float和double外,OGNL还让你使用“b”或“B”后缀指定BigDecimal常量,用“h”“H”后缀指定BigInteger常量。
    4、布尔常量:
    true和false。
    5、null常量。

    相关文章

      网友评论

          本文标题:OGNL表达式定义字符串常量 与单个字符常量使用问题

          本文链接:https://www.haomeiwen.com/subject/rnzlqrtx.html