mybatisplus按条件修改实体单个字段实现方式

 更新时间:2026年04月24日 09:45:45   作者:qq_36608622  
在MyBatis-Plus中,可以使用UpdateWrapper/LambdaUpdateWrapper按条件修改实体单个字段,推荐使用LambdaUpdateWrapper,它具有类型安全、清晰、高效等优点,避免使用updateById()或传入实体对象的方式,通过示例展示如何正确使用UpdateWrapper进行单个字段的更新

mybatisplus按条件修改实体单个字段

在 MyBatis-Plus 中,按条件修改单个字段(而不是整条记录),不要使用 updateById() 或传入实体对象的方式,而应使用 UpdateWrapper / LambdaUpdateWrapper 显式指定要更新的字段和条件。

推荐方式

使用 LambdaUpdateWrapper(类型安全、清晰、高效)

场景示例

import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;

// 方式1:通过 Service 调用(推荐)
boolean success = userService.update(
    Wrappers.<User>lambdaUpdate()
        .set(User::getStatus, "ACTIVE")   // 只更新 status 字段
        .eq(User::getId, 1001)            // WHERE 条件:id = 1001
);


// 生成的 SQL:
UPDATE user SET status = 'ACTIVE' WHERE id = 1001;

其他常见用法

// 1. 多条件 + 单字段更新
userService.update(
    Wrappers.<User>lambdaUpdate()
        .set(User::getStatus, "INACTIVE")
        .eq(User::getAge, 18)
        .likeRight(User::getName, "张")  // name LIKE '张%'
        .gt(User::getCreateTime, LocalDateTime.now().minusDays(7))
);


// 2. 使用 SQL 表达式(如自增、函数),setSql() 是直接拼接 SQL,确保值安全(避免 SQL 注入)。    
// status = status + 1(适用于数值字段)
userService.update(
    Wrappers.<User>lambdaUpdate()
        .setSql("login_count = login_count + 1")  // 注意:用 setSql()
        .eq(User::getId, 1001)
);


// 3. 仅使用 Mapper(不通过 Service)
@Autowired
private UserMapper userMapper;

userMapper.update(null, 
    Wrappers.<User>lambdaUpdate()
        .set(User::getStatus, "LOCKED")
        .eq(User::getUsername, "admin")
);
// 第一个参数传 null,表示不使用实体对象,完全依赖 Wrapper。

常见错误(务必避免)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java Playwright实现浏览器最大化

    Java Playwright实现浏览器最大化

    Playwright 是一个用于自动化 Web 应用测试的现代工具,支持多种语言(包括 Java)及多个浏览器,本文主要介绍了Java如何使用Playwright实现浏览器最大化,需要的可以参考下
    2024-12-12
  • Springboot+Vue+axios实现文章收藏功能

    Springboot+Vue+axios实现文章收藏功能

    这篇文章主要为大家详细介绍了Springboot+Vue+axios实现文章收藏功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • java设计模式责任链模式原理案例详解

    java设计模式责任链模式原理案例详解

    一个事件需要经过多个对象处理是一个挺常见的场景,譬如采购审批流程,请假流程,软件开发中的异常处理流程,web请求处理流程等各种各样的流程,可以考虑使用责任链模式来实现
    2021-09-09
  • SpringBoot+Vue.js实现前后端分离的文件上传功能

    SpringBoot+Vue.js实现前后端分离的文件上传功能

    这篇文章主要介绍了SpringBoot+Vue.js实现前后端分离的文件上传功能,需要的朋友可以参考下
    2018-06-06
  • SpringBoot实现发布/订阅广播消息的示例代码

    SpringBoot实现发布/订阅广播消息的示例代码

    在 RabbitMQ 的五大工作模式中,发布/订阅(Publish/Subscribe)广播模式是分布式系统中非常核心的通信方式,本文给大家介绍了SpringBoot实现发布/订阅广播消息的示例代码,需要的朋友可以参考下
    2026-05-05
  • 基于SpringBoot框架管理Excel和PDF文件类型

    基于SpringBoot框架管理Excel和PDF文件类型

    这篇文章主要介绍了基于SpringBoot框架,管理Excel和PDF文件类型,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • JavaWeb Session 会话管理实例详解

    JavaWeb Session 会话管理实例详解

    这篇文章主要介绍了JavaWeb Session 会话管理的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-09-09
  • SpringBoot整合MybatisPlus的简单教程实现(简单整合)

    SpringBoot整合MybatisPlus的简单教程实现(简单整合)

    这篇文章主要介绍了SpringBoot整合MybatisPlus的简单教程实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 详解Spring Kafka中关于Kafka的配置参数

    详解Spring Kafka中关于Kafka的配置参数

    这篇文章主要介绍了详解Spring Kafka中关于Kafka的配置参数,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Java和Rust实现JSON序列化互转的解决方案详解

    Java和Rust实现JSON序列化互转的解决方案详解

    这篇文章主要为大家详细介绍了Java和Rust实现JSON序列化互转的解决方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03

最新评论