当前位置: 首页 > news >正文

updateByPrimaryKey和updateByPrimaryKeySelective的区别


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

MyBatis Generator概述

在这里插入图片描述

MyBatis Generator是一个专门为MyBatis框架使用者定制的代码生成器,它可以快速的根据表生成对应的映射文件、接口文件、POJO。而且,在自动生成的映射文件中支持基本的增删改查操作,开发人员可在此基础上依据实际需求添加多表联查、存储过程等复杂SQL操作。

MyBatis Generator使用简单,通常只需要很少量的简单配置就可以完成大量的表到POJO生成工作,让开发人员解放出来更专注于业务逻辑的开发。

在使用MyBatis Generator时自动生成了updateByPrimaryKey和updateByPrimaryKeySelective用于执行依据主键进行更新操作。

updateByPrimaryKey

我们先来看第一种调用updateByPrimaryKey ( )方法依据主键进行更新。在使用该方式时需尤其注意以下情况。当Java对象的某属性有值时,在数据库更新记录时会将该属性值更新至原纪录对应的字段。但是,当Java对象的某属性未设置值时,在数据库更新记录时会将对应字段的值设置为null。

映射文件中的updateByPrimaryKey核心代码如下:

  <update id="updateByPrimaryKeySelective" parameterType="Worker" >update worker<set ><if test="wName != null" >w_name = #{wName,jdbcType=VARCHAR},</if><if test="fId != null" >f_id = #{fId,jdbcType=INTEGER},</if></set>where w_id = #{wId,jdbcType=INTEGER}</update><update id="updateByPrimaryKey" parameterType="com.cn.pojo.Worker" >update workerset w_name = #{wName,jdbcType=VARCHAR},f_id = #{fId,jdbcType=INTEGER}where w_id = #{wId,jdbcType=INTEGER}</update>

updateByPrimaryKeySelective

为了避免updateByPrimaryKey ( )方法可能出现的情况,我们可使用updateByPrimaryKeySelective ( )方法执行选择性更新。当Java对象的某属性有值时,在数据库更新记录时会将该属性值更新至原纪录对应的字段。当Java对象的某属性未设置值时,在数据库更新记录时不会将对应字段的值设置为null。类似地,既然该方法是依据主键值进行更新,那么,Java对象的主键属性值不能为空。

映射文件中的updateByPrimaryKeySelective核心代码如下:

  <update id="updateByPrimaryKeySelective" parameterType="Worker" >update worker<set ><if test="wName != null" >w_name = #{wName,jdbcType=VARCHAR},</if><if test="fId != null" >f_id = #{fId,jdbcType=INTEGER},</if></set>where w_id = #{wId,jdbcType=INTEGER}</update><update id="updateByPrimaryKey" parameterType="com.cn.pojo.Worker" >update workerset w_name = #{wName,jdbcType=VARCHAR},f_id = #{fId,jdbcType=INTEGER}where w_id = #{wId,jdbcType=INTEGER}</update>

从以上代码我们可以明显看出:updateByPrimaryKeySelective较updateByPrimaryKey而言多了非空判断。这正是两者区别的根源所在。

小结

一般情况下,在实际项目开发中执行依据主键进行更新时推荐使用updateByPrimaryKeySelective ( )方法。

同理、updateByExample与updateByExampleSelective 也存在类似的差异。所以,一般情况下,在实际项目开发中执行依据条件选择性更新时推荐使用updateByExampleSelective ( )方法。

相关文章:

updateByPrimaryKey和updateByPrimaryKeySelective的区别

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl MyBatis Generator概述 MyBatis Generator是一个专门为MyBatis框架使用者定制的代码生成器&#xff0c;它可以快速的根据表生成对应的映射文件、接口文件、POJO。而且&#…...

【ARM Coresight 4 - Rom Table 介紹】

文章目录 1.1 ROM Table1.1.1 Entry 寄存器 1.2 ROM Table 例子 1.1 ROM Table 在一个SoC中&#xff0c;有多个Coresight 组件&#xff0c;但是软件怎么去识别这些 Coresight 组件&#xff0c;去获取这些Coresight 组件的信息了&#xff1f;这个时候&#xff0c;就需要靠 Core…...

11111111

单选题 1、某地上2层的仪表装配厂房&#xff0c;耐火等级二级,每层建筑面积10000m2&#xff0c;该厂 房二层设有800m2的金属零件抛光工段&#xff0c;采用耐火极限为2.00h的防火隔墙与其他区域分隔&#xff0c;该厂房的火灾危险性为( )。 正确答案:B A.甲类 B.乙类 C.丙…...

JavaWeb——TCP协议的相关特性

目录 一、TCP 1、特性 2、确认应答 &#xff08;1&#xff09;、定义 &#xff08;2&#xff09;、原理 &#xff08;3&#xff09;、接收缓冲区 3、超时重传 &#xff08;1&#xff09;、丢包 &#xff08;2&#xff09;、定义 &#xff08;3&#xff09;、分类 二、…...

数据结构(C语言实现)——二叉树的概念及二叉树顺序结构和链式结构的实现(堆排序+TOP-K问题+链式二叉树相关操作)

文章目录 1. 前言2. 树的概念及结构2.1 树的概念2.2 树的相关概念2.3 树的表示 3. 二叉树的概念3.1 特殊二叉树3.2 二叉树的性质 4. 二叉树的顺序存储4.1 堆的概念4.2 堆的实现4.2.1 堆的结点定义4.2.2 堆的打印和销毁4.2.3 堆的插入4.2.4 堆的删除4.2.5 取堆顶数据4.2.6 堆的判…...

OpenShift:关于OpenShift(OKD)通过命令行的方式部署镜像以及S2I流程Demo

写在前面 因为参加考试&#xff0c;会陆续分享一些 OpenShift 的笔记博文内容为安装完 OpenShift, 利用 OpenShift 引擎部署一个镜像应用和一个 S2I 流程部署应用 Demo学习环境为 openshift v3 的版本&#xff0c;有些旧这里如果专门学习 openshift &#xff0c;建议学习 v4 版…...

楔形文字的破解(钉子形文字)【文字破译原理:信息的相关性】

文章目录 引言I 破解楔形文字1.1 贝希斯敦铭文1.2 破解古波斯楔形文字1.3 破解新埃兰楔形文字和巴比伦楔形文字1.4 破解苏美尔楔形文字引言 祖先借助外力走出了非洲,开始了农耕定居的生活,创造能量的水平和能量的使用效率都越来越高;依靠着语言、文字和书写系统,经验、技术…...

【网络安全】文件上传绕过思路

引言 分享一些文件上传绕过的思路&#xff0c;下文内容多包含实战图片&#xff0c;所以打码会非常严重&#xff0c;可多看文字表达&#xff1b;本文仅用于交流学习&#xff0c; 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人…...

MySQL数据库(2)

目录 日期类型的基本使用 timestamp时间戳 修改表 insert基本使用 insert注意事项 update基本使用 update注意事项 delete基本使用 delete注意事项 select基本使用 select练习1 select练习2 select练习3 日期类型的基本使用 timestamp时间戳 在5.7版本使用时间戳需…...

2023年学什么编程语言,最容易找工作?

在众多行业中&#xff0c;程序员属于高薪职业。无论是在国外还是国内&#xff0c;程序员的薪金水平普遍高于其他行业的工作岗位&#xff0c;例如web前端开发、软件工程、游戏开发、APP开发、网络爬虫、网站开发、人工智能开发、网络维护、Java开发、大数据分析、Python开发等工…...

4月23日,今日信息差

1、京东健康皮肤医院正式上线 2、蚂蚁集团再捐1亿元支持内蒙古种树治沙 3、苹果MacBook组装商广达将投资1.2亿美元在越南建电脑制造厂 4、用友与百度签署战略合作协议 5、马斯克&#xff1a;星舰可能在一两个月后准备再次发射 6、格芯起诉IBM 恐波及日本2nm芯片计划 7、河北南部…...

【随笔四】JavaScript 中的 rest

某次开发中&#xff0c;看到项目代码中用到了 rest 这个参数&#xff0c;但又没看到在哪里定义或者传入&#xff0c;当时没太理解它的意思&#xff0c;查了下资料才恍然大悟。含义也很简单&#xff0c;写个随笔记录下。 关键字 rest 的用法&#xff08;剩余参数&#xff09; 在…...

maven作用讲解---以及怎么配置阿里的maven镜像

目录 Maven介绍 传统的java项目的结构和maven的对比 传统 Maven的项目 如何配置阿里 maven 2. 修改 Maven介绍 传统的java项目的结构和maven的对比 传统 Maven的项目 如何配置阿里 maven (1) 把 D:\program\JavaIDEA 2020.2\plugins\maven\lib\maven3\conf\settings.xml…...

NXP公司LPC21xx+热敏电阻实现温度检测

LPC2131/32/34/36/38微控制器基于16位/32位Arm7TDMI-S™CPU&#xff0c;支持实时仿真和嵌入式跟踪&#xff0c;具有尺寸小&#xff0c;功耗低&#xff0c;多个32位定时器、单/双10位8通道ADC、10位DAC、PWM通道、47个GPIO线&#xff08;它们拥有多达9个边沿或电平触发的外部中断…...

Springboot信息泄露以及heapdump的利用

本文转载于https://blog.csdn.net/weixin_44309905/article/details/127279561 heapdump的利用 0x01 Springboot信息泄露 路由列表 0x02 下载heapdump0x03 利用heapdump的姿势 工具一&#xff1a;heapdump_tool工具二&#xff1a;Eclipse MemoryAnalyzer 0x01 Springboot信息…...

淘宝天猫店铺新品如何运营?

新品在店铺运营过程中是十分重要的部分&#xff0c;你知道新品在店铺运营中有何作用&#xff1f;了解新品运营机制吗&#xff1f;今天就来快速了解关于新品的知识点。 新品在店铺运营的角色&#xff1a; 01、商品生命周期有限 商品的普遍生命周期在3个月左右&#xff0c;3个…...

Linux-给普通用户sudo权限

给普通用户sudo权限 创建用户安装sudo组件设置sudo权限切换到 root 用户、以root用户登录修改 /etc/sudoers文件权限修改 /etc/sudoers文件 &#xff08;主要步骤&#xff09;保存退出将 /etc/sudoers写权限改回来结束 创建用户 useradd xwy //创建用户passwd xwy //为用户设置…...

小米13 Ultra:携光前行,追求每一束光的精确还原

“光&#xff0c;是影像的原点”&#xff0c;一切色彩、影调都在于光。我们目之所及的大千世界&#xff0c;皆被光与影一笔一划细细勾勒&#xff0c;为“视”界晕染上或鲜明、或复古、或反差、或梦幻的色调。我们用“光”去描绘、定义“影像”&#xff0c;让一切平凡的事物&…...

全志 Orange Pi相关网站集

Orange Pi 系统安装的常识 看到有教程说android系统需要用win32diskimager才能成功烧写运行镜像名称与版本的对应关系 ubuntu版本号代号16.04Xenial Xerus&#xff08;好客的非洲地鼠&#xff09;18.04Bionio Beaver &#xff08;仿生海狸}20.04Focal Fossa &#xff08;类似…...

js+css实现简单的弹框动画

效果图 只是一个简单的演示demo&#xff0c;但是可以后面可以优化样式啥的 刚开始元素的display为none&#xff0c;然后&#xff0c;为了给元素展示时添加一个动画&#xff0c;首先要添加样式类名show&#xff0c;让它覆盖display:none&#xff0c;变得可见。然后&#xff0c;添…...

Windows系统盘空间告急?Driver Store Explorer帮你轻松清理冗余驱动,快速释放10GB+

Windows系统盘空间告急&#xff1f;Driver Store Explorer帮你轻松清理冗余驱动&#xff0c;快速释放10GB 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾困惑于Windows系统盘空…...

2026最权威的十大降AI率助手推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 把维普平台针对 AI 生成内容的检测机制作为对象&#xff0c;要降低论文 AI 率得从语言重构以…...

万象视界灵坛惊艳效果:上传模糊图片仍准确返回‘雨夜霓虹’‘80年代复古’等高阶语义

万象视界灵坛惊艳效果&#xff1a;上传模糊图片仍准确返回雨夜霓虹80年代复古等高阶语义 1. 突破传统视觉识别的智能平台 在数字内容爆炸式增长的今天&#xff0c;如何从海量视觉数据中快速提取有价值的信息成为一大挑战。传统图像识别技术往往受限于预设分类体系&#xff0c…...

文件自动同步软件哪个好?企业级高效安全同步方案测评

文件自动同步软件对于许多中大型企业来说&#xff0c;是不可或缺的底层基础设施。不管是内部的多个服务器系统之间&#xff0c;跨部门团队之间&#xff0c;还是和外部的供应链伙伴、总部分支机构之间&#xff0c;都需要依赖文件自动同步软件来实现安全、自动化的文件传输与数据…...

3步攻克m3u8视频下载:零基础解决方案

3步攻克m3u8视频下载&#xff1a;零基础解决方案 【免费下载链接】m3u8_downloader 项目地址: https://gitcode.com/gh_mirrors/m3/m3u8_downloader 在数字化时代&#xff0c;流媒体内容已成为信息传播的主要形式之一。然而&#xff0c;许多在线视频采用m3u8格式并通过…...

实战应用指南:基于快马平台开发养龙虾产销一体化管理平台

今天想和大家分享一个最近用InsCode(快马)平台做的养龙虾产销管理系统的开发经历。作为一个养殖户出身的技术爱好者&#xff0c;我深知传统养殖业在数字化管理上的痛点&#xff0c;这次尝试用低代码方式解决实际问题&#xff0c;效果出乎意料的好。 系统设计思路 整个平台围绕四…...

一键定位手机号码:免费开源的地理位置查询神器

一键定位手机号码&#xff1a;免费开源的地理位置查询神器 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirrors/lo/…...

Pixel Couplet Gen多场景落地:企业春节活动、校园AI展、微信小程序贺卡

Pixel Couplet Gen多场景落地&#xff1a;企业春节活动、校园AI展、微信小程序贺卡 1. 项目背景与核心价值 Pixel Couplet Gen是一款基于ModelScope大模型驱动的创新型春联生成工具。它将传统春节文化与现代像素艺术完美融合&#xff0c;为用户带来全新的数字文化体验。 核心…...

暗黑破坏神2存档编辑器终极指南:5分钟解放你的游戏体验

暗黑破坏神2存档编辑器终极指南&#xff1a;5分钟解放你的游戏体验 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2中反复刷装备而烦恼吗&#xff1f;想快速体验不同职业build却不想从头练级&#xff1f;d2s-e…...

5个突破点:解锁时空数据金矿的ST-DBSCAN实战指南

5个突破点&#xff1a;解锁时空数据金矿的ST-DBSCAN实战指南 【免费下载链接】st_dbscan ST-DBSCAN: Simple and effective tool for spatial-temporal clustering 项目地址: https://gitcode.com/gh_mirrors/st/st_dbscan 问题发现&#xff1a;被忽视的时空关联密码 为…...