当前位置: 代码网 > it编程>编程语言>Java > MyBatis-Plus:saveOrUpdate根据指定字段更新或插入方式

MyBatis-Plus:saveOrUpdate根据指定字段更新或插入方式

2025年04月01日 Java 我要评论
一、概述mybatis-plus中提供了一个saveorupdate()方法,默认情况下可以根据主键是否存在进行更新或插入操作,但是实际场景中,我们会遇到根据指定字段进行更新或插入的情况。以下记录一下

一、概述

mybatis-plus中提供了一个saveorupdate()方法,默认情况下可以根据主键是否存在进行更新或插入操作,但是实际场景中,我们会遇到根据指定字段进行更新或插入的情况。

以下记录一下如何根据指定字段进行更新或插入操作。

二、实现方式

  • 功能描述: 根据实体对象的主键 id 进行判断,存在则更新记录,否则插入记录。
  • 返回值: boolean,表示插入或更新操作是否成功。
// @tableid 注解属性值存在则更新记录,否插入一条记录
boolean saveorupdate(t entity);

// 根据updatewrapper尝试更新,否继续执行saveorupdate(t)方法
boolean saveorupdate(t entity, wrapper<t> updatewrapper);

若要根据指定字段更新,则使用saveorupdate(t entity, wrapper<t> updatewrapper)方法。

iservice中存在一种这样的方法,接收两个参数,

default boolean saveorupdate(t entity, wrapper<t> updatewrapper) {
   return this.update(entity, updatewrapper) || this.saveorupdate(entity);
}

在执行时的执行逻辑是这样的:

  1. 首先根据updatewrapper查询需要更新哪个记录;
  2. 如果能查询到记录,则进行更新操作,更新时会根据entity对象属性的值进行更新,注意null值会忽略,如果未能查询到记录,则会把entity对象进行插入操作;

以一段代码给出详细的解释:

// 导入必要的类
import com.baomidou.mybatisplus.core.conditions.query.updatewrapper;
import com.baomidou.mybatisplus.core.toolkit.wrappers;

// 创建一个updatewrapper对象,指定查询条件
updatewrapper<user> updatewrapper = wrappers.query();
updatewrapper.eq("id", 111);  // 假设这里是你的指定字段和条件

// 调用saveorupdate方法,传入实体对象和updatewrapper对象
usermapper.saveorupdate(user, updatewrapper);

三、总结

总的来说,saveorupdate(t entity, wrapper updatewrapper)方法

会根据指定的条件先进行查询,然后根据查询结果自动决定是执行更新操作还是插入操作,从而实现根据指定字段执行保存或更新的逻辑。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com