mybatis-plus 的更新操作
·
在 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)
如果你需要根据特定条件来更新记录,可以使用 UpdateWrapper 或 LambdaUpdateWrapper 来构建更新条件。
使用 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;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)