MybatisPlus更新时部分失败的问题解决

 更新时间:2023年06月27日 10:13:26   作者:韩_师兄  
这篇文章主要为大家详细介绍了MybatisPlus更新时部分失败的问题分析和解决方法,文中的代码示例讲解的非常详细,需要的朋友可以参考下

1 问题模拟

1 添加依赖

在spring环境添加下面依赖包,如springboot环境,则添加另一个依赖包.

spring环境

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.4.0</version>
        </dependency>

springboot环境

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>

2 添加实体对象

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("dev_student") // 表名
public class Student {
    // 主键
    @TableId
    private String id;
    private String score;
    private String name;
    private Integer age;
    private Date creatTime;
    private String desc;
}

3 模拟调用

    @Test
    public void testUpdateById(){
        // 参数从前端传递,此处模拟获取
        Student student = new Student();
        student.setId("1111");
        student.setName("小明");
        student.setAge(18);
        student.setCreatTime(new Date());
        // 模拟前端更新 删除了备注信息
        student.setDesc("");
        // 模拟前端更新 将字段指为空传递
        student.setScore(null);
        studentMapper.updateById(student);
    }

4 查询结果

SQL语句目标: 将id为1111的对应的表字段更新为我们设置的值.

执行结果: 发现id为1111的数据,其他信息都进行了修改,备注和分数字段没有被修改.不符合我们的目标要求.

2 问题分析

根据上述问题分析,怀疑是不是配置有问题,导致数据没有更新成功.

官网简介:MyBatis-Plus (baomidou.com)

查询了一下官网信息:

mybatis-plus 配置文件后,有个global-config 全局配置,里面配置了更新、插入策略。

全局策略有:

  • IGNORED:忽略
  • NOT_NULL:非 NULL,默认策略
  • NOT_EMPTY:非空

关于mybatis-plus插入或更新的字段有 空字符串 或者 null 时,默认是不进行更新数据库的.

此外,还能对单个字段进行插入或更新设置.

关联的字段策略有:

  • IGNORED:忽略
  • NOT_NULL:非 NULL,默认策略
  • NOT_EMPTY:非空
  • NEVER 从不更新,不管字段是否有值,都不进行更新
  • DEFAULT 追随全局配置

问题解决

1 全局设置

mybatis-plus:
  global-config:
    db-config:
      update-strategy: IGNORED

2 字段设置

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("dev_student")
public class Student {
    @TableId
    private String id;
    private String score;
    private String name;
    private Integer age;
    private Date creatTime;
    // 更新时 忽略 不做判空和null校验
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String desc;
}

3 问题总结

关于mybatis-plus更新时部分字段失败的问题, 查看官方文档后,很容易知道问题在哪里,修改起来也很方便. 对于未知的新技术,需要多多去学习和关注官方文档,才能更好的使用它.

到此这篇关于MybatisPlus更新时部分失败的问题解决的文章就介绍到这了,更多相关MybatisPlus更新失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA中将SpringBoot项目提交到git仓库的方法步骤

    IDEA中将SpringBoot项目提交到git仓库的方法步骤

    本文主要介绍了IDEA中将SpringBoot项目提交到git仓库的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Eclipse不自动编译java文件的终极解决方法

    Eclipse不自动编译java文件的终极解决方法

    这篇文章主要介绍了Eclipse不自动编译java文件的终极解决方法,需要的朋友可以参考下
    2015-12-12
  • java bootclasspath的具体用法

    java bootclasspath的具体用法

    本文主要介绍了java bootclasspath的具体用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • springboot项目访问静态资源的配置代码实例

    springboot项目访问静态资源的配置代码实例

    这篇文章主要介绍了springboot项目访问静态资源的配置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java IO 之文件读写简单实例

    Java IO 之文件读写简单实例

    这篇文章主要介绍了Java IO 之文件读写简单实例的相关资料,需要的朋友可以参考下
    2017-06-06
  • JAVA实现往字符串中某位置加入一个字符串

    JAVA实现往字符串中某位置加入一个字符串

    这篇文章主要介绍了JAVA实现往字符串中某位置加入一个字符串,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 图解Java经典算法快速排序的原理与实现

    图解Java经典算法快速排序的原理与实现

    快速排序是基于二分的思想,对冒泡排序的一种改进。主要思想是确立一个基数,将小于基数的数放到基数左边,大于基数的数字放到基数的右边,然后在对这两部分进一步排序,从而实现对数组的排序
    2022-09-09
  • Java 8新特性方法引用详细介绍

    Java 8新特性方法引用详细介绍

    这篇文章主要介绍了Java 8新特性方法引用详细介绍的相关资料,这里对新特性 方法引用做的资料整理,具有参考价值,需要的朋友可以参考下
    2016-12-12
  • Java基础学习之字符串知识总结

    Java基础学习之字符串知识总结

    今天带着大家复习一下Java基础知识-字符串,文中介绍的非常详细,对初步学习Java或者复习Java的小伙伴们都很有帮助哟,需要的朋友可以参考下
    2021-05-05
  • JDK安装与配置超级详细教程(包含二个或多个JDK的同时安装)

    JDK安装与配置超级详细教程(包含二个或多个JDK的同时安装)

    这篇文章主要给大家介绍了关于JDK安装与配置(包含二个或多个JDK的同时安装)的相关资料,对于Java学习者来说,一台电脑拿到手肯定要配置JDK,但是对于新手来说还是容易出错,需要的朋友可以参考下
    2023-10-10

最新评论