大家都用过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还是被更新了,不过这个影响可以忽略不记。

MyBatis updateByExample和updateByExampleSelective的区别的更多相关文章

  1. mybatis:updatebyexample与updateByExampleSelective

    MyBatis,通常逆向工程工具生成接口和xml映射文件用于简单的单表操作. 有两个方法: updateByExample 和 updateByExampleSelective  ,作用是对数据库进行 ...

  2. Spring Data JPA、MyBatis还有Hibernate有什么区别

    原文:https://www.imooc.com/article/19754?block_id=tuijian_wz Spring Data JPA.MyBatis还有Hibernate有什么区别 2 ...

  3. mybatis中的updateByExampleSelective方法怎么使用

    mybatis中的updateByExampleSelective方法怎么使用.sendDetailMapper.updateByExampleSelective(sendDetail, m);参数m ...

  4. Mybatis中的#与$的区别

    一.对比场景 场景:数据库分表时,需要将分表的表序号传入的sql中. SpringBoot中使用注解如下: @Insert("insert into collect_#{tblNum}(id ...

  5. 【mybatis】mybatis中 的# 和 $的区别

    mybatis中 的# 和 $的区别 参考地址:https://www.cnblogs.com/sxdcgaq8080/p/10869144.html

  6. Mybatis和Hibernate框架的区别

    Mybatis和Hibernate框架的区别1 简单简介 1.1 Hibernate 框架 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,建立对象与数据 ...

  7. mybatis中的#和$的区别 以及 防止sql注入

    声明:这是转载的. mybatis中的#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sq ...

  8. mybatis中#和$符号的区别

    mybatis做为一个轻量级ORM框架在许多项目中使用,因其简单的入门受到了广大开发者的热爱.在近期项目中再做一个相关的开发,碰到了#.$符号这样的问题,之前没怎么注意过,通过学习之后,有了点感悟,分 ...

  9. mybatis深入理解之 # 与 $ 区别以及 sql 预编译

    mybatis 中使用 sqlMap 进行 sql 查询时,经常需要动态传递参数,例如我们需要根据用户的姓名来筛选用户时,sql 如下: select * from user where name = ...

随机推荐

  1. 数据库中id为自增

    使用find_and_modify函数可以设置mongo的id为自增 且可以支持原有的高并发操作,find_and_modify函数完成更新查找两个操作其是原子性的操作 代码:(auto_id.py) ...

  2. .Net导出pdf文件,C#实现pdf导出 转载 http://www.cnblogs.com/hmYao/p/5842958.html

    导出pdf文件. 在编码前需要在网上下载个itextsharp.dll,此程序集是必备的.楼主下载的是5.0版本,之前下了个5.4的似乎不好用. 下载之后直接添加引用. <%@ Page Lan ...

  3. python 网站 监控返回值

    import requests try: code = requests.get("https://api.sudaizhijia.cm/").status_code print( ...

  4. XenApp6.5产品BUG

    外网登录报错,手机登录报错问题解决: XenApp6.5产品BUG, 在WI服务器的两个web站点中修改defalut.ica文件中添加一行,CGPAddr=即可. 路径:C:\inetpub\www ...

  5. mac安装linux双系统的吐槽

    [First day] 尝试安装mac - linux 双系统 首先,尝试的是ubuntu16.06版本,要把双系统安装至电脑硬盘512G SSD中, *** 分盘 1.1 打开实用工具中的磁盘管理工 ...

  6. (ZT)算法杂货铺——k均值聚类(K-means)

    https://www.cnblogs.com/leoo2sk/category/273456.html 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先 ...

  7. 《DOM Scripting》学习笔记-——第五章、第六章 案列改进

    第四章的案例代码可以得到更好的改进.例如:预留退路.向后兼容性和分离js. 原html代码: <!DOCTYPE html> <html lang="en"> ...

  8. DOM对象与jquery对象相互转换

  9. Day09 -超级经典面试题:Ruby的a ||= b(or-equals)是什么意思呢?

    前情提要: 写了这一系列下来,发现Ruby有许多特别的方法.前几天提到String字串,并且接续着在第八天我们了解串接(concatenate)与插入interpolation#{}方法(就连加号+也 ...

  10. 通过微信公众号API复制公众号自定义菜单同时增加子菜单方法

    主要的原因是再不破坏公众号以前的菜单的基础上增加自定义菜单,主要步骤如下: 1.通过微信提供的微信公众平台接口调试工具获取公众号的所有自定义菜单 网址:https://mp.weixin.qq.com ...