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

  • 相关阅读:
    编程里的数字游戏
    SqlServer2005Express下的事件探查器
    来玩玩这个
    把一个bitmap在内存中的数据块 搬到另一个bitmap中
    一些常用的sql
    C#图像处理
    来玩玩画直线
    关于未来的思考
    年末个人小结
    [转载]编写超级可读代码的15个最佳实践
  • 原文地址:https://www.cnblogs.com/yhongl/p/6100922.html
Copyright © 2011-2022 走看看