• MyBatis updateByExample和updateByExampleSelective的区别


    大家都用过mybatis generator来生产数据库的xml文件,但是关于updateByExample和updateByExampleSelective的区别我之前一直分不太清楚。

    如果分不清楚,就用updateByExampleSelective这个,不要用updateByExample!

    为什么,举个例子:

    BlPayReqLog blPayReqLog = new BlPayReqLog();
    blPayReqLog.setDivChangeStatus(Constant.DIV_STATUS_I);
    BlPayReqLogExample blPayReqLogExample = new BlPayReqLogExample();
    blPayReqLogExample.createCriteria().andSysSeqIdEqualTo(sysSeqId).andSysDateEqualTo(sysDate).
      andDivChangeStatusEqualTo(Constant.DIV_STATUS_P); blPayReqLogMapper.updateByExampleSelective(blPayReqLog, blPayReqLogExample);

    上面这段代码,用的updateByExampleSelective,更新的时候只会更新divChangeStatus这个字段,但是如果用updateByExample,其他的字段都会设置为Null!太恐怖了,用了不当,就会导致灾难性的后果,所以,只建议用updateByExampleSelective这个,不要用updateByExample!

    另外需要注意的是,如果blPayReqLog没有设置任何值,那么程序会抛出异常:

    ORA-00971: missing SET keyword

    很明显,这个异常是说没有设置属性的值,所以,必须要加上相应的值,最简单的方法,比如你建的表都是由insetTime和updateTime,你没在更新的时候,都可以设置一下这个updateTime为最新的值,从而可以正常处理。当然这也有一个问题,就是可能确实没有任何字段要更新,但是你updateTime还是被更新了,不过这个影响可以忽略不记。

  • 相关阅读:
    利用pip批量升级packages
    基于cx_freeze编译PyQt4程序(numpy & scipy)
    利用Python读取Matlab的Mat文件内容
    在PyQt4中使用matplotlib
    个人Python常用Package及其安装
    python变量不能以数字打头
    Python Django开始
    Django 1.9 支持中文(转)
    Ubuntu1604中mysql的登录问题
    h3c防火墙的设置过程
  • 原文地址:https://www.cnblogs.com/fxl-njfu/p/10528115.html
Copyright © 2020-2023  润新知