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区别

  • 相关阅读:
    Vue学习笔记-2
    versionCompare 版本号比较工具
    Vue学习笔记-1
    工作机会
    PAT题目AC汇总(待补全)
    sqli-labs-master 第二关+第三关+第四关
    sqli-labs-master 盲注+第五关+第六关
    Java面向对象--equeal和==
    Java面向对象--object
    Java面向对象--成员变量的初始值
  • 原文地址:https://www.cnblogs.com/yhongl/p/6100922.html
Copyright © 2011-2022 走看看