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 worker
    set 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 worker
    set w_name = #{wName,jdbcType=VARCHAR},
      f_id = #{fId,jdbcType=INTEGER}
    where w_id = #{wId,jdbcType=INTEGER}
  </update>

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

小结

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/14117.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

哪个品牌的洗地机更好用?热门洗地机盘点

洗地机没有使用过之前一直怀疑是不是智商税&#xff0c;等到后面体验过之后&#xff0c;发现是真的香。因为不可否认的是&#xff0c;洗地机的清洁力还是不错的。不仅能够快速清洁干净地面&#xff0c;大大的节省了我们的清洁用时&#xff0c;操作起来也省心省力。作为一个洗地…

Linux下实现C语言程序

一.情况说明 写这篇博客的情况比较复杂&#xff0c;首先我本来是参加新星计划按照规划现在去学习shell脚本语言的&#xff0c;但是博主现在由于其他原因需要了解makefile&#xff0c;makefile是Linux系统下的一种工具&#xff0c;makefile的一些背景要涉及链接库的知识&#xf…

css初入门:网页布局之网格布局-grid

文章目录 网格布局-grid1、设置网格布局2、网格布局介绍3、网格容器grid-template-columns属性grid-template-rows 属性justify-content 属性justify-items属性align-content 属性 4、网格项目grid-column-start、grid-column-start、grid-column属性grid-row-start、grid-row-…

4.2.2字符串KMP算法

对朴素模式匹配算法的优化&#xff1a; 当我们匹配最后一个字符才发现匹配失败。 那么前面这些字符一定是与模式串对应的。 通过模式串的部分匹配 朴素模式匹配算法优化思路&#xff1a; 不匹配的字符之前&#xff0c;一定是和模式串一致的。 可以跳过中间好几个没有必要的对比…

如何将项目提交到别人的仓库

大纲&#xff1a; 1、在gitee中克隆(clone)别人仓库的代码。 首先&#xff0c;进入别人的仓库&#xff0c;点击 克隆/下载 2、在你存放项目的文件夹下克隆你刚刚复制的代码 &#xff08;右键点击Git Clone即可&#xff09; 点击OK 就开始克隆了 克隆成功之后&#xff0c;文件上…

Maya英文界面怎么改为中文界面

Maya是一款3D动画和视觉效果软件&#xff0c;用于创建逼真的角色和大片般的效果&#xff0c;也是受到电影、电视和游戏行业的 3D 建模师、动画师、照明艺术家和 VFX 艺术家等多数人喜爱的一款3D软件。我们在使用Maya的过程中&#xff0c;常常会遇到一些小阻碍&#xff0c;比如M…

蓝牙耳机接打电话哪个比较好?接打电话最好的蓝牙耳机

技术已经发展到如此程度&#xff0c;耳机可以淹没嘈杂环境中不断出现的杂音&#xff0c;同时还能让我们在通话、音乐和娱乐方面保持清晰&#xff0c;既然如此&#xff0c;我们就来整理一下2023年适合通话和娱乐的无线耳机清单。 一、南卡小音舱Lite2蓝牙耳机 参考价格&#x…

基于Java+jquery+SpringMVC校园网站平台设计和实现

基于JavajquerySpringMVC校园网站平台设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 文章目…

IDEA22.3.3的三个常用经常遇到的配置问题

1、期待效果&#xff1a;【打开iDEA的时候&#xff0c;让开发者选择需要打开的项目】 设置如下 2、期待效果&#xff1a;配置默认的Maven&#xff0c;避免每次新建项目后&#xff0c;都需要去修改Maven配置 同理&#xff0c;修改默认的java版本和自己本地java环境一致 3、新建…

【C++】哈希的应用——布隆过滤器

哈希的应用——布隆过滤器 文章目录 哈希的应用——布隆过滤器一、布隆过滤器的概念与性质1.布隆过滤器的引出2.布隆过滤器的概念3.布隆过滤器的误判4.布隆过滤器的应用场景5.布隆过滤器优缺点6.如何选择哈希函数个数和布隆过滤器长度 二、布隆过滤器的实现1.布隆过滤器基本框架…

【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

IDEA 用上这款免费 GPT4 插件,生产力爆表了

早前给大家分享过GPT的一些玩法&#xff0c;今天再分享给一款 IDE 插件&#xff1a;Bito-ChatGPT &#xff0c;安装就能直接在IDE中使用 GPT&#xff0c;就算是不会魔法&#xff0c;同样也能使用&#xff1b; 最重要是免费使用&#xff0c;速度也非常可观&#xff0c;今天分享…

看板与 Scrum:有什么区别?

看板和Scrum是项目管理方法论&#xff0c;以小增量完成项目任务并强调持续改进。但是他们用来实现这些目标的过程是不同的。看板以可视化任务和连续流程为中心&#xff0c;而Scrum更多是关于为每个交付周期实施时间表和分配设定角色。 在看板和Scrum之间做出选择并不总是必要…

2022年NOC大赛创客智慧编程赛道图形化scratch复赛题,包含答案解析

目录 2022 年 NOC 大赛创客智慧编程图形化复赛用题 下载文档打印做题:

SpringCache

一、介绍 Spring Cache是一个框架&#xff0c;实现了基于注解的缓存功能&#xff0c;只需要简单地加一个注解&#xff0c;就能实现缓存功能&#xff0c;大大简化我们在业务中操作缓存的代码。 Spring Cache只是提供了一层抽象&#xff0c;底层可以切换不同的cache实现。具体就…

面试2个月没有一个offer?阿里技术官的800页知识宝典打破你的僵局~

在经历了一波裁员浪潮后&#xff0c;大环境似乎有所好转&#xff0c;但对于面试者来说&#xff0c;面试愈发困难&#xff0c;现在面试官动不动就是底层原理&#xff0c;动不动就是源码分析&#xff0c;面试一定会抓你擅长的地方&#xff0c;一直问&#xff0c;问到你不会为止。…

深入理解Javascript事件处理机制

深入理解javascript事件处理机制 前言 在开发web应用程序时&#xff0c;事件处理机制是javascript中至关重要的一部分。许多高级特性&#xff0c;如事件冒泡、事件捕获和事件委托&#xff0c;都是通过事件处理来实现的。熟练掌握这些技术可以帮助我们更好地组织代码、提高代码…

pwlink用作USB转TTL,进入HC-05的AT模式

不说废话的文章概括&#xff1a; 直接连接PWLINK与HC-05&#xff0c;无法进入AT模式&#xff0c;因为蓝牙模块的VCC只能接5V&#xff0c;不能接3.3V&#xff0c;而且PWLINK有两个VDD引脚&#xff0c;且两个VDD引脚初始默认输出电压都是3.3V&#xff0c;所以需要将3.3V改为5V的…

Centos8编译安装内核

首先下载kernel&#xff0c;5.x版本的内核&#xff0c;下载地址&#xff1a; https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ 系统安装相关包&#xff1a; # yum install -y bc gcc make python3 ncurses-devel flex bison openssl-devel elfutils-libelf-devel将内…

大数据数仓维度建模

目录 维度建模分为三种&#xff1a; 1、星型模型&#xff1a; 2、雪花模型&#xff1a; 3、星座模型&#xff1a; 模型的选择&#xff1a; 维度表和事实表&#xff1a; 维度表&#xff1a; 维度表特性 &#xff1a; 事实表&#xff1a; 事实表特性&#xff1a; 事务型…