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

mybatisPlus新增時其他字段的值和id保持一致的幾種方法

 更新時間:2025年05月20日 08:28:41   作者:愛吃土豆的馬鈴薯  
本文主要介紹了mybatisPlus新增時其他字段的值和id保持一致,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

要實現(xiàn)新增時 sp_id_path 自動與 id 保持一致,需要在實體類和插入邏輯中做相應(yīng)處理。MyBatis-Plus 提供了幾種方式來實現(xiàn)這一需求:

方案一:使用 MyBatis-Plus 的自動填充功能

這是最優(yōu)雅的解決方案,通過實現(xiàn) MetaObjectHandler 接口,在插入前自動設(shè)置 sp_id_path 的值:

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        // 獲取當(dāng)前實體對象
        Object entity = metaObject.getOriginalObject();
        
        // 只處理 DsteSpConfigNew 實體
        if (entity instanceof DsteSpConfigNew) {
            DsteSpConfigNew config = (DsteSpConfigNew) entity;
            
            // 若 sp_id_path 未手動設(shè)置,則在插入前設(shè)置為 id 值
            if (config.getSpIdPath() == null) {
                // 注意:此處 id 可能還未生成,需要特殊處理
                // 下面會提供具體實現(xiàn)方式
            }
        }
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        // 更新填充邏輯
    }
}

方案二:在插入后更新 sp_id_path

由于 id 是自增主鍵,插入前無法獲取,可分兩步實現(xiàn):

  • 先插入記錄,獲取生成的 id
  • 立即更新 sp_id_path 為該 id
@Service
public class DsteSpConfigNewService {

    @Autowired
    private DsteSpConfigNewMapper configMapper;

    @Transactional
    public void saveConfig(DsteSpConfigNew config) {
        // 1. 插入記錄,此時會自動生成 id
        configMapper.insert(config);
        
        // 2. 獲取生成的 id
        Long id = config.getId();
        
        // 3. 更新 sp_id_path 為 id 值
        DsteSpConfigNew updateEntity = new DsteSpConfigNew();
        updateEntity.setId(id);
        updateEntity.setSpIdPath(String.valueOf(id));
        
        configMapper.updateById(updateEntity);
    }
}

方案三:使用數(shù)據(jù)庫觸發(fā)器(推薦)

數(shù)據(jù)庫層面的觸發(fā)器可以更可靠地保證 sp_id_path 與 id 的一致性:

DELIMITER $$
CREATE TRIGGER after_dste_sp_config_new_insert
AFTER INSERT ON dste_sp_config_new
FOR EACH ROW
BEGIN
    -- 將新記錄的 sp_id_path 更新為 id 值
    UPDATE dste_sp_config_new 
    SET sp_id_path = NEW.id 
    WHERE id = NEW.id;
END$$
DELIMITER ;

這種方式無需修改 Java 代碼,完全由數(shù)據(jù)庫自動處理,但需要注意觸發(fā)器可能帶來的性能影響。

實體類配置

確保實體類中包含這兩個字段,并使用正確的注解:

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("dste_sp_config_new")
public class DsteSpConfigNew {

    @TableId(type = IdType.AUTO)
    private Long id;
    
    private String spName;
    
    private Long projectId;
    
    private String spIdPath;
    
    private String spNamePath;
    
    private Long parentSpId;
    
    private Integer spStatus;
    
    private LocalDateTime createAt;
    
    private LocalDateTime updateAt;
    
    private LocalDateTime deleteAt;
}

到此這篇關(guān)于mybatisPlus新增時其他字段的值和id保持一致的幾種方法的文章就介紹到這了,更多相關(guān)mybatisPlus新增值和id保持一致內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Java超詳細(xì)講解三大特性之一的繼承

    Java超詳細(xì)講解三大特性之一的繼承

    繼承就是可以直接使用前輩的屬性和方法。自然界如果沒有繼承,那一切都是處于混沌狀態(tài)。多態(tài)是同一個行為具有多個不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個接口,使用不同的實例而執(zhí)行不同操作
    2022-05-05
  • springboot反爬蟲組件kk-anti-reptile的使用方法

    springboot反爬蟲組件kk-anti-reptile的使用方法

    這篇文章主要介紹了springboot反爬蟲組件kk-anti-reptile的使用方法,幫助大家更好的利用spring boot反爬蟲,保護(hù)網(wǎng)站安全,感興趣的朋友可以了解下
    2021-01-01
  • Springboot web項目打包實現(xiàn)過程解析

    Springboot web項目打包實現(xiàn)過程解析

    這篇文章主要介紹了Springboot web項目打包實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Java實現(xiàn)合并word文檔的示例代碼

    Java實現(xiàn)合并word文檔的示例代碼

    在做項目中,經(jīng)常會遇到一種情況,需要將一個小word文檔的內(nèi)容插入到一個大word(主文檔)中。本文就為大家準(zhǔn)備了Java實現(xiàn)合并word文檔的方法,需要的可以參考一下
    2022-08-08
  • Java垃圾回收機(jī)制的示例詳解

    Java垃圾回收機(jī)制的示例詳解

    本文主要圍繞著Java垃圾回收當(dāng)中的哪些內(nèi)存需要回收?什么時候回收?如何回收?進(jìn)行了詳細(xì)講解,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-04-04
  • 快速搭建一個SpringBoot項目(純小白搭建教程)

    快速搭建一個SpringBoot項目(純小白搭建教程)

    本文主要介紹了快速搭建一個SpringBoot項目,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Java字符串split使用方法代碼實例

    Java字符串split使用方法代碼實例

    這篇文章主要介紹了Java字符串split使用方法代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 解決Lombok注解不起作用的問題

    解決Lombok注解不起作用的問題

    這篇文章主要介紹了解決Lombok注解不起作用的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java實現(xiàn)簡易外賣訂餐系統(tǒng)

    java實現(xiàn)簡易外賣訂餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡易外賣訂餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Springboot的spring-boot-maven-plugin導(dǎo)入失敗的解決方案

    Springboot的spring-boot-maven-plugin導(dǎo)入失敗的解決方案

    這篇文章主要介紹了Springboot的spring-boot-maven-plugin導(dǎo)入失敗的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論