zoukankan      html  css  js  c++  java
  • mybaits 在if-test判断数字、数字型字符串等注意事项

    mybatis 判断 if 标签里的test值可见mybatis源码  

      IfSqlNode -> apply() 方法

    追踪源码可知,最终是通过OGNL类判断的,所以我们可以看 

    OgnlOps.equal( v1, v2 )

    个人总结如下
    OGNL的比较逻辑,是以转为数字为核心,它会尝试将 value转为数字
    具体规则如下
      如果为Integer,Double等直接是数字,
      如果俩者都是数字型,则比较值的大小 例如 1==1.00 是true
      如果都不是数值型,并且 不是都继承了 Comparable,则通过 equals比较
      如果都不是数值型,并且继承了Comparable,或者为枚举型,则通过compareTo 比较
      否则,一个数值型,一个不是,则会尝试将非数值型转为数值,
        如果是 boolean型,true为1,false为0
        如果是单引号,'12' 里面的长度为0,则返回值为0;长度为1,则为char,长度大于1 则为 string
          如果是 char,它会通过 asii 码转为 double(ps '1' asii码为49,' ' 空格 asii码为32)
          如果是string,这尝试转为数值,无法转换,则false,否则,进行数值比较
        如果是双引号,则视为字符串 "1",则会被转为数值 1,
        char型,也可以通过 '1'.toString() 来转为字符串
  • 相关阅读:
    python搭建开发环境
    django初探
    linux下安装Composer
    文件记录追加 file_put_content
    自定义导出表格
    异步处理接口 fsockopen
    appcache checking update
    js pix
    Event Aggregator
    ko list and css gradient
  • 原文地址:https://www.cnblogs.com/jaxlove-it/p/7605506.html
Copyright © 2011-2022 走看看