MyBatis-Plus修改数据,会不会把其他字段置为null「建议收藏」

MyBatis-Plus修改数据,会不会把其他字段置为null「建议收藏」前两天在用MyBatis-Plus写了一张单表的增删改查,在写到修改的时候,就突然蹦出一个奇怪的想法。 MyBatis-Plus的BaseMapper中有两个关于修改的方法。如下: int updat

MyBatis-Plus修改数据,会不会把其他字段置为null

前两天在用MyBatis-Plus写了一张单表的增删改查,在写到修改的时候,就突然蹦出一个奇怪的想法。

MyBatis-Plus的BaseMapper中有两个关于修改的方法。如下:

int updateById(@Param("et") T entity);
int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);

就我在想,在修改的时候,给这个entity个别字段赋值,部分字段不管它,在调用update方法的时候,会不会在修改完之后,数据库的其他字段被置为null。

开始测试

1.测试updateById方法

首先这是未修改之前的数据
MyBatis-Plus修改数据,会不会把其他字段置为null「建议收藏」

点击查看测试代码
@Test
    public void testUpdateById() {
        SysUser sysUser = new SysUser();
        sysUser.setId(1569971954553761794L);
        sysUser.setAvatar("abc.png");
        sysUser.setMobilePhoneNumber("13266669999");
        int i = sysUserMapper.updateById(sysUser);
        log.info("flag:{}",i);
    }

这是执行完测试代码后的数据,很明显在修改完指定字段的同时,其他没有被指定的字段没有被修改。

MyBatis-Plus修改数据,会不会把其他字段置为null「建议收藏」

再看一下该代码所执行的sql
UPDATE ms_sys_user SET avatar=?, mobile_phone_number=? WHERE id=?

2.测试update方法

这个update方法是可以进行批量修改的,符合匹配条件的数据都会被修改。

首先这是未修改之前的数据

MyBatis-Plus修改数据,会不会把其他字段置为null「建议收藏」

测试代码中的两种写法等价,出来的sql都是一样的。

点击查看测试代码
@Test
    public void testUpdate() {
        UpdateWrapper<SysUser> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("avatar","1.png")
                .set("avatar","12.png");
        SysUser sysUser = new SysUser();
        sysUser.setEmail("9999@qq.com");
        sysUserMapper.update(sysUser, updateWrapper);
    }

 @Test
    public void testUpdate() {
        UpdateWrapper<SysUser> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("avatar","1.png")
                .set("avatar","12.png")
                .set("email","9999@qq.com");
        sysUserMapper.update(null, updateWrapper);
    }

这是执行完update方法之后的数据,可以明显的看到两条符合匹配条件的数据都被修改了,并且其他不相关的字段还是原来的。

MyBatis-Plus修改数据,会不会把其他字段置为null「建议收藏」

执行的sql如下
Preparing: UPDATE ms_sys_user SET email=?, avatar=? WHERE (avatar = ?)
Parameters: 9999@qq.com(String), 12.png(String), 1.png(String)

综上所试:

在执行修改方法的时候,在不指定其他字段时候,默认只会修改实体中指定字段的值,那些没有被指定的字段不会被置为null。

原文地址:https://www.cnblogs.com/huoyl/archive/2022/10/03/sn1.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4706.html

(0)
上一篇 2023-06-08
下一篇 2023-06-08

相关推荐

  • centos7安装Mysql爬坑记录 – G

    centos7安装Mysql爬坑记录 – Gcentos7安装Mysql爬坑记录 查看是否已安装 使用下列命令查看是否已经安装过mysql/mariadb/PostgreSQL 如果未安装,不返回任何结果(ECS的centos镜像默认未安装任何

    2023-03-13
    1.7K
  • oracle invalid number_oracle31626

    oracle invalid number_oracle31626出现ora-31655错误的情况 原因:是因为不是同一个schema,导致的问题产生 解决方案: 在导入语句最后添加上remap_schema=old:new 着old是原schema,也就是导出的用

    2023-03-01
    117
  • redis的事务_redis解决的问题

    redis的事务_redis解决的问题更多技术文章,请关注我的个人博客 www.immaxfang.com 和小公众号 Max的学习札记。 Redis 事务简介 Redis 只是提供了简单的事务功能。其本质是一组命令的集合,事务支持一次执

    2023-06-12
    97
  • 数据库事务的隔离级别[通俗易懂]

    数据库事务的隔离级别[通俗易懂] 数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发…

    2023-03-21
    101
  • MySQL版本引起的错误

    MySQL版本引起的错误各位看官可以关注博主个人博客,了解更多信息。 作者:Surpasser 链接地址:https://surpass.org.cn 前言 接上一篇帖子,博主在CentOS上安装了最新版的MySQL容器(版

    2023-04-15
    111
  • 使用Python tkinter实现输入框

    使用Python tkinter实现输入框Tkinter是Python自带的GUI库,它是Tk GUI工具箱的Python接口,是Python编程语言的标准GUI库之一,具有跨平台性。Tkinter库用于Python图形用户界面编程,支持Windows、Linux、Mac OS X等操作系统。

    2024-03-02
    36
  • 用Python编写CGI脚本,实现动态Web页面生成

    用Python编写CGI脚本,实现动态Web页面生成CGI(Common Gateway Interface)是一种通信协议,它定义了Web服务器如何与其他软件程序(称为CGI程序或脚本)交互,从而在Web页面上动态地生成内容。

    2024-01-21
    63
  • SQL Injection (Blind) time 盲注入[亲测有效]

    SQL Injection (Blind) time 盲注入[亲测有效]python3编写EXP系列 SQL Injection (Blind) time盲注入 1 简介 DVWA靶场这个是最基础的靶场如果想学习EXP编写这个靶场最好不过,如果能把这个靶场的利用的EXP…

    2023-04-12
    121

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注