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。

常见错误(务必避免)

总结

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

相关文章

  • Spring中的@ExceptionHandler注解统一异常处理详解

    Spring中的@ExceptionHandler注解统一异常处理详解

    这篇文章主要介绍了Spring中的@ExceptionHandler注解统一异常处理详解,当我们使用这个@ExceptionHandler注解时,定义一个异常的处理方法,加上@ExceptionHandler注解,这个方法就会处理类中其他方法抛出的异常,需要的朋友可以参考下
    2024-01-01
  • 基于Properties文件中的空格问题

    基于Properties文件中的空格问题

    这篇文章主要介绍了Properties文件中的空格问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 一文学会Java运算符的使用

    一文学会Java运算符的使用

    计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量,本篇通过示例详细讲解了Java中不同运算符的使用,需要的朋友可以参考下
    2022-05-05
  • Java字符串格式化,{}占位符根据名字替换实例

    Java字符串格式化,{}占位符根据名字替换实例

    这篇文章主要介绍了Java字符串格式化,{}占位符根据名字替换实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Java使用JDK与Cglib动态代理技术统一管理日志记录

    Java使用JDK与Cglib动态代理技术统一管理日志记录

    这篇文章主要介绍了Java使用JDK与Cglib动态代理技术统一管理日志记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • java删除文件和文件夹具体实现

    java删除文件和文件夹具体实现

    这篇文章介绍了java删除文件和文件夹具体实现,有需要的朋友可以参考一下
    2013-10-10
  • 解决Mybatis-Plus操作分页后数据失效问题

    解决Mybatis-Plus操作分页后数据失效问题

    这篇文章主要介绍了解决Mybatis-Plus操作分页后数据失效问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • java中用String.Join美化代码的实例讲解

    java中用String.Join美化代码的实例讲解

    在本篇文章里小编给大家整理的是一篇关于java中用String.Join美化代码的实例讲解内容,有需要的朋友们可以学习下。
    2020-12-12
  • Java实现简单的RPC框架的示例代码

    Java实现简单的RPC框架的示例代码

    本篇文章主要介绍了Java实现简单的RPC框架的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Java 加密解密基础分类及模式归纳整理

    Java 加密解密基础分类及模式归纳整理

    这篇文章主要介绍了Java加密解密基础分类方法汇总的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论