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更新失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java事务回滚详解以及常见误区

    Java事务回滚详解以及常见误区

    事务是指是程序中一系列严密的逻辑操作,而且所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消,这篇文章主要介绍了Java事务回滚详解以及常见误区的相关资料,需要的朋友可以参考下
    2025-09-09
  • Java自定义函数调用方法解析

    Java自定义函数调用方法解析

    这篇文章主要介绍了java自定义函数调用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Kotlin基础教程之面向对象

    Kotlin基础教程之面向对象

    这篇文章主要介绍了Kotlin基础教程之面向对象的相关资料,需要的朋友可以参考下
    2017-05-05
  • Java 自定义注解在登录验证的应用示例

    Java 自定义注解在登录验证的应用示例

    本文主要介绍了Java 自定义注解在登录验证的应用示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 详解spring-boot actuator(监控)配置和使用

    详解spring-boot actuator(监控)配置和使用

    本篇文章主要介绍了spring-boot actuator(监控)配置和使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java8时间api之LocalDate/LocalDateTime的用法详解

    Java8时间api之LocalDate/LocalDateTime的用法详解

    在项目中,时间的使用必不可少,而java8之前的时间api Date和Calander等在使用上存在着很多问题,于是,jdk1.8引进了新的时间api-LocalDateTime,本文就来讲讲它的具体使用吧
    2023-05-05
  • idea修改language level版本实现方式

    idea修改language level版本实现方式

    文章介绍了在不同版本JDK之间的切换时遇到的语言级别版本问题的解决方案,通过修改系统环境变量、Maven配置和IDEA设置,可以实现不同JDK版本的切换,并确保项目顺利编译和运行
    2025-12-12
  • 详解JAVA的封装

    详解JAVA的封装

    Java面向对象的三大特性:封装、继承、多态。下面对三大特性之一封装进行了总结,需要的朋友可以参考下
    2017-04-04
  • 浅谈HashMap中7种遍历方式的性能分析

    浅谈HashMap中7种遍历方式的性能分析

    本文先从HashMap的遍历方法讲起,然后再从性能、原理以及安全性等方面,来分析HashMap各种遍历方式的优势与不足
    2021-06-06
  • Spring MVC常用客户端参数接收方式详解

    Spring MVC常用客户端参数接收方式详解

    这篇文章主要介绍了Spring MVC常用客户端参数接收方式详解,文章主要介绍了几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02

最新评论