欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis-Plus:saveOrUpdate根據(jù)指定字段更新或插入方式

 更新時(shí)間:2025年04月01日 10:03:19   作者:五月天的尾巴  
這篇文章主要介紹了MyBatis-Plus:saveOrUpdate根據(jù)指定字段更新或插入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、概述

MyBatis-Plus中提供了一個(gè)saveOrUpdate()方法,默認(rèn)情況下可以根據(jù)主鍵是否存在進(jìn)行更新或插入操作,但是實(shí)際場(chǎng)景中,我們會(huì)遇到根據(jù)指定字段進(jìn)行更新或插入的情況。

以下記錄一下如何根據(jù)指定字段進(jìn)行更新或插入操作。

二、實(shí)現(xiàn)方式

  • 功能描述: 根據(jù)實(shí)體對(duì)象的主鍵 ID 進(jìn)行判斷,存在則更新記錄,否則插入記錄。
  • 返回值: boolean,表示插入或更新操作是否成功。
// @TableId 注解屬性值存在則更新記錄,否插入一條記錄
boolean saveOrUpdate(T entity);

// 根據(jù)updateWrapper嘗試更新,否繼續(xù)執(zhí)行saveOrUpdate(T)方法
boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper);

若要根據(jù)指定字段更新,則使用saveOrUpdate(T entity, Wrapper<T> updateWrapper)方法。

IService中存在一種這樣的方法,接收兩個(gè)參數(shù),

default boolean saveOrUpdate(T entity, Wrapper<T> updateWrapper) {
   return this.update(entity, updateWrapper) || this.saveOrUpdate(entity);
}

在執(zhí)行時(shí)的執(zhí)行邏輯是這樣的:

  1. 首先根據(jù)updateWrapper查詢(xún)需要更新哪個(gè)記錄;
  2. 如果能查詢(xún)到記錄,則進(jìn)行更新操作,更新時(shí)會(huì)根據(jù)entity對(duì)象屬性的值進(jìn)行更新,注意null值會(huì)忽略,如果未能查詢(xún)到記錄,則會(huì)把entity對(duì)象進(jìn)行插入操作;

以一段代碼給出詳細(xì)的解釋?zhuān)?/p>

// 導(dǎo)入必要的類(lèi)
import com.baomidou.mybatisplus.core.conditions.query.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;

// 創(chuàng)建一個(gè)UpdateWrapper對(duì)象,指定查詢(xún)條件
UpdateWrapper<User> updateWrapper = Wrappers.query();
updateWrapper.eq("id", 111);  // 假設(shè)這里是你的指定字段和條件

// 調(diào)用saveOrUpdate方法,傳入實(shí)體對(duì)象和UpdateWrapper對(duì)象
userMapper.saveOrUpdate(user, updateWrapper);

三、總結(jié)

總的來(lái)說(shuō),saveOrUpdate(T entity, Wrapper updateWrapper)方法

會(huì)根據(jù)指定的條件先進(jìn)行查詢(xún),然后根據(jù)查詢(xún)結(jié)果自動(dòng)決定是執(zhí)行更新操作還是插入操作,從而實(shí)現(xiàn)根據(jù)指定字段執(zhí)行保存或更新的邏輯。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java金額數(shù)字轉(zhuǎn)中文工具類(lèi)詳解

    java金額數(shù)字轉(zhuǎn)中文工具類(lèi)詳解

    這篇文章主要為大家詳細(xì)介紹了java金額數(shù)字轉(zhuǎn)中文工具類(lèi)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Sharding-jdbc報(bào)錯(cuò):Missing the data source name:‘m0‘解決方案

    Sharding-jdbc報(bào)錯(cuò):Missing the data source 

    在使用MyBatis-plus進(jìn)行數(shù)據(jù)操作時(shí),新增Order實(shí)體屬性后,出現(xiàn)了數(shù)據(jù)源缺失的提示錯(cuò)誤,原因是因?yàn)閡serId屬性值使用了隨機(jī)函數(shù)生成的Long值,這與sharding-jdbc的路由規(guī)則計(jì)算不匹配,導(dǎo)致無(wú)法找到正確的數(shù)據(jù)源,通過(guò)調(diào)整userId生成邏輯
    2024-11-11
  • 初始JAVA模塊化開(kāi)發(fā)的超詳細(xì)步驟(適合菜鳥(niǎo))

    初始JAVA模塊化開(kāi)發(fā)的超詳細(xì)步驟(適合菜鳥(niǎo))

    這篇文章主要介紹了初始JAVA模塊化開(kāi)發(fā)的超詳細(xì)步驟,詳細(xì)解釋了模塊描述符的職責(zé)、模塊路徑的概念以及如何使用命令行運(yùn)行模塊化Java程序,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • java實(shí)現(xiàn)角色及菜單權(quán)限的項(xiàng)目實(shí)踐

    java實(shí)現(xiàn)角色及菜單權(quán)限的項(xiàng)目實(shí)踐

    在Java中,實(shí)現(xiàn)角色及菜單權(quán)限管理涉及定義實(shí)體類(lèi)、設(shè)計(jì)數(shù)據(jù)庫(kù)表、實(shí)現(xiàn)服務(wù)層和控制器層,這種管理方式有助于有效控制用戶權(quán)限,適用于企業(yè)級(jí)應(yīng)用,感興趣的可以一起來(lái)了解一下
    2024-09-09
  • 深入了解Java并發(fā)AQS的獨(dú)占鎖模式

    深入了解Java并發(fā)AQS的獨(dú)占鎖模式

    AQS是一種提供了原子式管理同步狀態(tài)、阻塞和喚醒線程功能以及隊(duì)列模型的簡(jiǎn)單框架。一般來(lái)說(shuō),同步工具實(shí)現(xiàn)鎖的控制分為獨(dú)占鎖和共享鎖,而AQS提供了對(duì)這兩種模式的支持。本文主要來(lái)介紹一下獨(dú)占鎖模式,需要的可以參考一下
    2022-10-10
  • SpringBoot 整合 Avro 與 Kafka的詳細(xì)過(guò)程

    SpringBoot 整合 Avro 與 Kafka的詳細(xì)過(guò)程

    本文介紹了如何在Spring Boot中使用Avro和Kafka進(jìn)行數(shù)據(jù)的序列化和反序列化,并通過(guò)MyBatisPlus將數(shù)據(jù)存入數(shù)據(jù)庫(kù),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • java讀取resource目錄下文件的方法示例

    java讀取resource目錄下文件的方法示例

    這篇文章主要介紹了利用java讀取resource目錄下文件的方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家具有一定的參考借鑒,需要的朋友們下面來(lái)一起看看吧。
    2017-02-02
  • SpringBoot @Cacheable自定義KeyGenerator方式

    SpringBoot @Cacheable自定義KeyGenerator方式

    這篇文章主要介紹了SpringBoot @Cacheable自定義KeyGenerator方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java使用modbus4j實(shí)現(xiàn)modbus?tcp通訊

    Java使用modbus4j實(shí)現(xiàn)modbus?tcp通訊

    Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個(gè)品牌)在1979年發(fā)明的,是全球第一個(gè)真正用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議,本文主要介紹了java如何使用modbus4j實(shí)現(xiàn)modbus?tcp通訊,感興趣的可以了解下
    2023-12-12
  • Java?項(xiàng)目連接并使用?SFTP?服務(wù)的示例詳解

    Java?項(xiàng)目連接并使用?SFTP?服務(wù)的示例詳解

    SFTP是一種安全的文件傳輸協(xié)議,是SSH(Secure?Shell)協(xié)議的一個(gè)子協(xié)議,設(shè)計(jì)用于加密和保護(hù)文件傳輸?shù)陌踩?這篇文章主要介紹了Java?項(xiàng)目如何連接并使用?SFTP?服務(wù)的示例詳解,需要的朋友可以參考下
    2025-01-01

最新評(píng)論