zoukankan      html  css  js  c++  java
  • mybatis组建sql过程中判定数字0和空字符串相等的问题

    最近做一个功能的时候发现传递参数值为数字0的参数到mybatis中时,if标签未生效。传递参数为“status”==0;if标签为<if test="status != '' and status != null">...</if> ,通过跟踪代码发现,mybatis在OgnlOps中调用了CompareWithConversion方法,如下:

    该方法中调用了doubleValue()去获取传入的数字0和test中空字符串‘’的double值,都为0.0,如下

     这里传入参数为空串,长度为0,所以也返回了0.0,所以mybatis中数字0和‘’相等,if标签test不通过导致失效。

    小知识点:

      test标签中写的是status != '',这里''在进行比对的时候mybatis将其通过Ognl的方法转换为了"",如下:

     具体过程太过复杂,暂不讨论。

    解决方法:

      可以将数字0改为字符串“0”来使其生效。

  • 相关阅读:
    A
    E
    C
    A
    exgcd
    博客
    简单数论
    extended_gcd(扩展欧几里德算法) 青蛙的约会
    扩展欧几里德算法—求解不定方程,线性同余方程
    素数筛 E
  • 原文地址:https://www.cnblogs.com/guyaoblog/p/14234239.html
Copyright © 2011-2022 走看看