码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 关于Mybatis提交更新字段使用 updateByPrimaryKey和 updateByPrimaryKeySelective的记录


    文章目录

    • 背景
    • 1. updateByPrimaryKey
    • 2. updateByPrimaryKeySelective

    背景

    以前一直在用 updateByPrimaryKeySelective() 来提交更新。最近涉及到了 在某种条件下 需要提交清除某几个表字段内容使其变为null的需求,然后惊讶发现设置了字段为null后该方法提交,数据库表中那几个字段值没有被改变的结果。其实大家稍微了解下就清楚,我也是忘记了,现在水一篇记录一下。

    1. updateByPrimaryKey

    此方法修改所有提交的数据,即哪怕是将实体类属性设置成null,提交后也会修改。
    但是!!! 你最好确保你提交的所有是你最终都要改的,否则它会清空你不想改的数据!!!
    举个例子:

    BeanUtils.copyProperties(deviceActiveInfoVO, deviceActiveInfo);
    deviceActiveInfo.setAuth_doc(""); // 清空授权文件内容
    deviceActiveInfo.setMd5(""); // 清空MD5内容
    deviceActiveInfo.setActive_time(new Date());  // 更新激活时间
    deviceActiveInfoMapper.updateByPrimaryKey(deviceActiveInfo);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    该例中我只想修改auth_doc、md5为null值,但是如果你的实体类 deviceActiveInfo中其他字段你没有设置,默认为空,该方法提交修改后会连同那几个字段的值也同步更新。结果那几个字段都为null了。。。

    言尽于此,使用需谨慎。

    2. updateByPrimaryKeySelective

    此方法即我们都知道的,忽略提交数据为null的字段更新。还是这个例子:

    BeanUtils.copyProperties(deviceActiveInfoVO, deviceActiveInfo);
    deviceActiveInfo.setAuth_doc(""); // 清空授权文件内容
    deviceActiveInfo.setMd5(""); // 清空MD5内容
    deviceActiveInfo.setActive_time(new Date());  // 更新激活时间
    deviceActiveInfoMapper.updateByPrimaryKeySelective(deviceActiveInfo);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    一开始我设置成 null ,但很明显提交后数据库字段未被清空。由于该方法的特殊性,又不想用方法①给自己一不注意挖坑,所以将设置null改为设置成空字符串 “”。这样也是可以更新到数据库字段,达到清空旧的数据的目的。

  • 相关阅读:
    JS里arguments的作用
    jenkins常见问题
    2024年热门电脑监控软件,十大电脑监控软件推荐
    Qt编写物联网管理平台48-特色功能设计
    undefined reference to `timersub‘ 错误处理
    批量修改文件格式(python代码+exe文件)。
    Rocky9.2根目录满了如何扩容根目录
    使用xtrabackup,mysqldump进行mysql5.7主从数据同步配置
    计算机毕业设计Java毕业生就业管理系统(源码+系统+mysql数据库+lw文档)
    分析大疆官网根据ip自动跳转到指定域名
  • 原文地址:https://blog.csdn.net/qq_36256590/article/details/126290227
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号