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

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

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

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

方案一:使用 MyBatis-Plus 的自動(dòng)填充功能

這是最優(yōu)雅的解決方案,通過(guò)實(shí)現(xiàn) MetaObjectHandler 接口,在插入前自動(dòng)設(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)前實(shí)體對(duì)象
        Object entity = metaObject.getOriginalObject();
        
        // 只處理 DsteSpConfigNew 實(shí)體
        if (entity instanceof DsteSpConfigNew) {
            DsteSpConfigNew config = (DsteSpConfigNew) entity;
            
            // 若 sp_id_path 未手動(dòng)設(shè)置,則在插入前設(shè)置為 id 值
            if (config.getSpIdPath() == null) {
                // 注意:此處 id 可能還未生成,需要特殊處理
                // 下面會(huì)提供具體實(shí)現(xiàn)方式
            }
        }
    }

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

方案二:在插入后更新 sp_id_path

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

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

    @Autowired
    private DsteSpConfigNewMapper configMapper;

    @Transactional
    public void saveConfig(DsteSpConfigNew config) {
        // 1. 插入記錄,此時(shí)會(huì)自動(dòng)生成 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ù)庫(kù)觸發(fā)器(推薦)

數(shù)據(jù)庫(kù)層面的觸發(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 ;

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

實(shí)體類配置

確保實(shí)體類中包含這兩個(gè)字段,并使用正確的注解:

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

相關(guān)文章

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

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

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

    springcloud檢索中間件?ElasticSearch?分布式場(chǎng)景的使用

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

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

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

    Java 隨機(jī)生成驗(yàn)證碼(支持大小寫(xiě)字母、數(shù)字、隨機(jī)字體)的實(shí)例

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

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

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

    springboot整合tkmybatis方式以及使用過(guò)程

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

    Java多線程join方法實(shí)例代碼

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

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

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

    使用idea啟動(dòng)DataX的方法示例

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

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

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

最新評(píng)論

保靖县| 金湖县| 开封县| 酒泉市| 泸州市| 泸州市| 焦作市| 平阳县| 东莞市| 灯塔市| 洛宁县| 元谋县| 周宁县| 璧山县| 泾源县| 涿鹿县| 河津市| 沁阳市| 通城县| 南康市| 常德市| 永新县| 石狮市| 钟山县| 西青区| 融水| 盘锦市| 卢湾区| 灌南县| 唐山市| 承德市| 鄂州市| 黑河市| 财经| 夏津县| 五指山市| 五台县| 嵩明县| 漳州市| 怀仁县| 嘉荫县|