zoukankan      html  css  js  c++  java
  • Ibatis使用 isNotNull之伤

     在线上数据没有出现问题前,从来没有关注过和怀疑过sqlmap写的存在问题,更准备的讲是判断函数的使用存在问题。

    出现这个问题,第一直觉数据是走订正造成的,因为sqlmap中使用的是非空非Null的值才会更新。妈蛋为后来的排查直接绕过了真正的原因。

    分析过订正及线上Db执行过的SQL后发现,发起端全是由应用程序。呃,这时候开始有点紧张了,是不是代码结构存在问题.....

    开始进行了排查之路,看了一下所有调用Update的操作,一其存在十几处,量上还可以。一个方法一个方法的进行排查,最后发现有一个接口问题最有嫌疑,直接拿前置给的对象直接UpdateDb数据....

    然后,言归正转,再来看一下ibatis判断的函数意义.(我们使用的有isNotNull和isNotEmpty)

    但是出事的那个字段使用的是isNotNull。这就是问题原因,下面罗列和区分一下他们之前的区另,对应的函数还有好多,这里不一一介绍。

    在iBATIS中 isNull用于判断参数是否为NullisNotNull相反

    在iBATIS中 isEmpty判断参数是否为Null或者空,满足其中一个条件则其true
    在iBATIS中 isNotEmpty相反,当参数既不为Null也不为空是其为true

    isNull, isNotNull与isEmpty, isNotEmpty区别

  • 相关阅读:
    关于字符串转义的代码
    JAVA发布aar文件
    apache虚拟主机配置HTTPS
    font-face跨域办法
    Javascript数组方法(译)
    Python动态生成变量
    给AOP的after函数使用原函数局部变量
    stopImmediatePropagation的应用
    IE9或以上的浏览器flash值为空时,导致domready不触发
    html写法对gzip压缩率的影响
  • 原文地址:https://www.cnblogs.com/yhongl/p/6100922.html
Copyright © 2011-2022 走看看