在 MyBatis-Plus 中,update 方法的使用主要有以下几种方式:

1. 通过 ID 更新(updateById

        这是最直接的更新方式,适用于你知道要更新的记录的 ID。在实体类中,需要在主键属性上加上 @TableId 注解。使用 updateById 方法时,只需要传入一个实体对象,MyBatis-Plus 会自动更新这个实体中非空字段对应的数据库记录。

User user = new User();
user.setId(1L); // 假设ID为1
user.setName("新名称");
user.setEmail("新邮箱");
boolean updated = userMapper.updateById(user); // 返回受影响的行数

2. 条件更新(update

        如果你需要根据特定条件来更新记录,可以使用 UpdateWrapperLambdaUpdateWrapper 来构建更新条件。

使用 UpdateWrapper
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name", "旧名称"); // 设置更新条件
User user = new User();
user.setAge(25); // 只更新年龄
boolean updated = userMapper.update(user, updateWrapper); // 根据条件更新
使用 LambdaUpdateWrapper
LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(User::getName, "旧名称").set(User::getAge, 25); // 使用Lambda表达式设置条件和更新的字段
boolean updated = userMapper.update(null, lambdaUpdateWrapper); // 更新操作,第一个参数可以为null

3. 使用 UpdateChainWrapper 或 LambdaUpdateChainWrapper

这些是链式操作的包装器,允许你以更流畅的方式编写更新语句。

UpdateChainWrapper<User> chainWrapper = new UpdateChainWrapper<>(userMapper);
chainWrapper.eq("name", "旧名称").set("age", 26).update();

或者使用 Lambda 表达式:

LambdaUpdateChainWrapper<User> lambdaChainWrapper = new LambdaUpdateChainWrapper<>(userMapper);
lambdaChainWrapper.eq(User::getName, "旧名称").set(User::getAge, 26).update();

4. 全局配置更新策略

        MyBatis-Plus 允许你配置全局的字段策略,包括插入策略、更新策略和选择策略。这些策略可以控制如何处理字段的 null 值。

mybatis-plus:
  global-config:
    db-config:
      update-strategy: ignored # 忽略null值,不更新到数据库

        这将全局设置更新策略为 ignored,即不会将 null 值更新到数据库中。你也可以在实体类的字段上使用 @TableField 注解来覆盖全局设置。

@TableField(updateStrategy = FieldStrategy.IGNORED)
private String fieldName;

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐