最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2025年05月20日 08:28:41   作者:愛吃土豆的馬鈴薯  
本文主要介紹了mybatisPlus新增時其他字段的值和id保持一致,文中通過示例代碼介紹的非常詳細,對大家的學(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的Synchronized鎖原理和優(yōu)化

    淺談Java的Synchronized鎖原理和優(yōu)化

    這篇文章主要介紹了Java的Synchronized鎖原理和優(yōu)化,synchronized的作用是保證在同一時刻, 被修飾的代碼塊或方法只會有一個線程執(zhí)行,以達到保證并發(fā)安全的效果,需要的朋友可以參考下
    2023-05-05
  • springcloud檢索中間件?ElasticSearch?分布式場景的使用

    springcloud檢索中間件?ElasticSearch?分布式場景的使用

    單機的elasticsearch做數(shù)據(jù)存儲,必然面臨兩個問題:海量數(shù)據(jù)存儲問題、單點故障問題,本文重點給大家介紹springcloud檢索中間件?ElasticSearch?分布式場景的運用,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • java如何根據(jù)時間戳生成有序ID

    java如何根據(jù)時間戳生成有序ID

    這篇文章主要介紹了java如何根據(jù)時間戳生成有序ID問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Java 隨機生成驗證碼(支持大小寫字母、數(shù)字、隨機字體)的實例

    Java 隨機生成驗證碼(支持大小寫字母、數(shù)字、隨機字體)的實例

    java隨機產(chǎn)生驗證碼,可以隨機生成數(shù)字、大寫字母、小寫字母。還可以隨機生成文字字體、及大小。在圖片上面可能字體都不不同、大小不等
    2013-05-05
  • Java實現(xiàn)常見排序算法的優(yōu)化

    Java實現(xiàn)常見排序算法的優(yōu)化

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Java實現(xiàn)常見排序算法的優(yōu)化展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-01-01
  • springboot整合tkmybatis方式以及使用過程

    springboot整合tkmybatis方式以及使用過程

    這段文章主要介紹了tkmybatis框架如何解決mybatis中每操作單表需手寫xml文件的問題,并詳細解釋了框架配置、注解使用及常用Mapper方法的使用說明,特別強調(diào)了lombok框架的引用以簡化代碼
    2026-06-06
  • Java多線程join方法實例代碼

    Java多線程join方法實例代碼

    這篇文章主要介紹了Java多線程join方法實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 淺談一下Spring的核心基礎(chǔ)IOC與DI

    淺談一下Spring的核心基礎(chǔ)IOC與DI

    這篇文章主要介紹了Spring的核心基礎(chǔ)IOC與DI的詳細用法,spring技術(shù)是現(xiàn)在企業(yè)開發(fā)中幾乎必備的技術(shù)選型,那么學(xué)好spring就很重要,本篇著重講解spring的核心機制,IOD與DI,一起來看看吧
    2023-03-03
  • 使用idea啟動DataX的方法示例

    使用idea啟動DataX的方法示例

    這篇文章主要介紹了使用idea啟動DataX的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • SpringBoot中整合消息服務(wù)組件的方法

    SpringBoot中整合消息服務(wù)組件的方法

    本文介紹了消息服務(wù)組件的基本概念,以及如何在SpringBoot中整合常見的消息服務(wù)組件,如ActiveMQ、RabbitMQ和Kafka,我們探討整合消息服務(wù)組件在實際應(yīng)用場景中的優(yōu)勢,感興趣的朋友跟隨小編一起看看吧
    2023-07-07

最新評論

余庆县| 南召县| 贵定县| 新河县| 垦利县| 三门峡市| 包头市| 巴楚县| 灵武市| 葵青区| 麟游县| 久治县| 稻城县| 连平县| 剑河县| 岳阳市| 双鸭山市| 太谷县| 商南县| 通山县| 桂林市| 南通市| 甘谷县| 陵水| 定日县| 修武县| 赣州市| 海淀区| 咸宁市| 平和县| 高陵县| 卢湾区| 永州市| 新疆| 丰县| 武威市| 乌兰察布市| 株洲县| 枞阳县| 武鸣县| 大理市|