MyBatis-Plus:saveOrUpdate根據(jù)指定字段更新或插入方式
一、概述
MyBatis-Plus中提供了一個(gè)saveOrUpdate()方法,默認(rèn)情況下可以根據(jù)主鍵是否存在進(jìn)行更新或插入操作,但是實(shí)際場景中,我們會遇到根據(jù)指定字段進(jìn)行更新或插入的情況。
以下記錄一下如何根據(jù)指定字段進(jìn)行更新或插入操作。
二、實(shí)現(xiàn)方式
- 功能描述: 根據(jù)實(shí)體對象的主鍵 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í)行邏輯是這樣的:
- 首先根據(jù)updateWrapper查詢需要更新哪個(gè)記錄;
- 如果能查詢到記錄,則進(jìn)行更新操作,更新時(shí)會根據(jù)entity對象屬性的值進(jìn)行更新,注意null值會忽略,如果未能查詢到記錄,則會把entity對象進(jìn)行插入操作;
以一段代碼給出詳細(xì)的解釋:
// 導(dǎo)入必要的類
import com.baomidou.mybatisplus.core.conditions.query.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
// 創(chuàng)建一個(gè)UpdateWrapper對象,指定查詢條件
UpdateWrapper<User> updateWrapper = Wrappers.query();
updateWrapper.eq("id", 111); // 假設(shè)這里是你的指定字段和條件
// 調(diào)用saveOrUpdate方法,傳入實(shí)體對象和UpdateWrapper對象
userMapper.saveOrUpdate(user, updateWrapper);三、總結(jié)
總的來說,saveOrUpdate(T entity, Wrapper updateWrapper)方法
會根據(jù)指定的條件先進(jìn)行查詢,然后根據(jù)查詢結(jié)果自動決定是執(zhí)行更新操作還是插入操作,從而實(shí)現(xiàn)根據(jù)指定字段執(zhí)行保存或更新的邏輯。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot集成極光推送完整實(shí)現(xiàn)代碼
本文主要介紹了SpringBoot集成極光推送完整實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
IDEA巧用Postfix Completion讓碼速起飛(小技巧)
這篇文章主要介紹了IDEA巧用Postfix Completion讓碼速起飛,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Java實(shí)現(xiàn)藍(lán)橋杯G將軍的示例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)藍(lán)橋杯G將軍的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02

