MyBatis 中updateByPrimaryKey和updateByPrimaryKeySelective区别

ops/2024/10/23 13:00:42/

在 MyBatis 中,updateByPrimaryKeyupdateByPrimaryKeySelective主要有以下区别:

一、功能

  1. updateByPrimaryKey
    • 会根据传入的实体对象,将数据库表中对应主键的记录所有字段全部更新为实体对象中的值。
    • 即使实体对象中的某些字段值为null,也会将数据库中的对应字段更新为null
  2. updateByPrimaryKeySelective
    • 会根据传入的实体对象,只更新数据库表中对应主键的记录中不为null的字段。
    • 即只更新实体对象中有具体值的字段,不会将值为null的字段更新到数据库中。

二、使用场景

  1. updateByPrimaryKey
    • 当你确定要完全覆盖数据库中已有记录的所有字段值时使用。
    • 例如,在进行全量更新操作且你明确知道所有字段的值都应该被更新时。
  2. updateByPrimaryKeySelective
    • 当你只希望更新部分字段,而不想影响其他字段的值时使用。
    • 比如,用户只修改了某个实体的部分属性,此时使用这个方法可以避免将其他未修改的字段意外更新为null

总的来说,updateByPrimaryKeySelective更加灵活,可以避免不必要的数据库字段更新,减少数据被意外覆盖的风险。


http://www.ppmy.cn/ops/127825.html

相关文章

数据分析题面试题系列2

一.如何估算星巴克一天的营业额 a.需求澄清:区域?节假日?产品范围? b.收入销售杯数*单价(营业时间*每小时产能*每小时产能利用率)*平均单价 Hypo该星巴克门店的营业时间为12小时(取整&#x…

vxe-table 导入导出功能全解析

一、vxe-table 导入导出功能概述 vxe-table 的导入导出功能在数据处理中具有至关重要的作用。在现代数据管理和处理的场景中,高效地导入和导出数据是提高工作效率的关键。 对于导入功能而言,它允许用户将外部的表格数据,如 Excel 文件&…

【RTT-Studio】详细使用教程十七:FreeModbus通信--LCD

文章目录 一、简介二、Modbus通信三、LCD通信四、配置FreeModbus通信协议四、完整代码五、测试验证 一、简介 Modbus协议是一种用于工业控制的网络通讯协议,可以片面的理解为,Modbus协议一种机器与机器之间进行数据、信息传递的一种格式规范。   Modbu…

大模型落地实战指南:从选择到训练,深度解析显卡选型、模型训练技、模型选择巧及AI未来展望---打造AI应用新篇章

0.前言大模型发展史 早期阶段(1950s~1980s) 在1950年代初期,人们开始尝试使用计算机处理自然语言文本。然而,由于当时的计算机处理能力非常有限,很难处理自然语言中的复杂语法和语义。随着技术的发展,自然…

linux命令之lvdisplay用法

lvdisplay 显示逻辑卷属性 补充说明 lvdisplay命令 用于显示LVM逻辑卷空间大小、读写状态和快照信息等属性。如果省略"逻辑卷"参数,则lvdisplay命令显示所有的逻辑卷属性。否则,仅显示指定的逻辑卷属性。 语法 lvdisplay(参数)参数 逻辑…

大数据——本地威胁检测的全球方法

大数据似乎是众多专业人士关注的话题,从在自然灾害发生时帮助挽救生命,到帮助营销团队设计更有针对性的策略以接触新客户。 对于安全工程师来说,大数据分析被证明是抵御不断演变的网络入侵的有效防御手段,这得益于基于大量不同网…

PL/I语言的起源?有C语言,有B语言和A语言吗?为什么shell脚本最开始可能有#!/bin/bash字样?为什么不支持嵌套注释?

PL/I语言的起源 在20世纪50~60年代,当时主流的编程语言是COBOL/FORTRAN/ALGOL等,IBM想要设计一门通用的编程语言,已有的编程语言无法实现此要求,故想要设计一门新语言,即是PL/I. PL/I是Programming Language/One的缩写…

基于SpringBoot+Vue的厨艺交流系统的设计与实现(源码+定制开发)厨艺知识与美食交流系统开发、在线厨艺分享与交流平台开发、智能厨艺交流与分享系统开发

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…