【第19章】MyBatis-Plus自定義ID生成器

文章目錄

  • 前言
  • 一、如何自定義
  • 二、Spring Boot 集成
    • 1. 方式一:聲明為Bean供Spring掃描注入
    • 2. 方式二:使用配置類
    • 3. 方式三:通過MybatisPlusPropertiesCustomizer自定義
  • 三、Spring 集成
    • 1. 方式一:XML配置
    • 2. 方式二:注解配置
  • 四、與KeyGenerator的差異
  • 總結


前言

MyBatis-Plus 提供了靈活的自定義ID生成器功能,允許開發者根據業務需求定制ID生成策略。從3.3.0版本開始,默認使用雪花算法結合不含中劃線的UUID作為ID生成方式。

MyBatis-Plus自帶主鍵生成策略對比

方法主鍵生成策略主鍵類型說明
nextIdASSIGN_IDLong,Integer,String支持自動轉換為String類型,但數值類型不支持自動轉換,需精準匹配,例如返回Long,實體主鍵就不支持定義為Integer
nextUUIDASSIGN_UUIDString默認不含中劃線的UUID生成

一、如何自定義

MyBatis-Plus 提供了多種方式來實現自定義ID生成器,以下是一些示例工程和配置方法。

二、Spring Boot 集成

1. 方式一:聲明為Bean供Spring掃描注入

@Component
public class CustomIdGenerator implements IdentifierGenerator {@Overridepublic Long nextId(Object entity) {// 使用實體類名作為業務鍵,或者提取參數生成業務鍵String bizKey = entity.getClass().getName();// 根據業務鍵調用分布式ID生成服務long id = ...; // 調用分布式ID生成邏輯// 返回生成的ID值return id;}
}

2. 方式二:使用配置類

@Bean
public IdentifierGenerator idGenerator() {return new CustomIdGenerator();
}

3. 方式三:通過MybatisPlusPropertiesCustomizer自定義

@Bean
public MybatisPlusPropertiesCustomizer plusPropertiesCustomizer() {return plusProperties -> plusProperties.getGlobalConfig().setIdentifierGenerator(new CustomIdGenerator());
}

三、Spring 集成

1. 方式一:XML配置

<bean name="customIdGenerator" class="com.example.CustomIdGenerator"/>
<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig"><property name="identifierGenerator" ref="customIdGenerator"/>
</bean>

2. 方式二:注解配置

@Bean
public GlobalConfig globalConfig() {GlobalConfig conf = new GlobalConfig();conf.setIdentifierGenerator(new CustomIdGenerator());return conf;
}

四、與KeyGenerator的差異

MyBatis-PlusIdentifierGenerator主要用于生成數據庫表的主鍵ID,而KeyGeneratorMyBatis框架中的一個接口,用于在執行SQL語句時生成鍵值,通常用于生成自增主鍵或者在執行INSERT語句后獲取新生成的ID。

IdentifierGenerator更加專注于主鍵ID的生成,而KeyGenerator則更加通用,可以用于多種鍵值生成場景。在使用MyBatis-Plus時,通常推薦使用IdentifierGenerator來生成主鍵ID,因為它與MyBatis-Plus的集成更加緊密,提供了更多的便利性和功能。


總結

回到頂部

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41469.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41469.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41469.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【CUDA】 矩陣乘法 matMatMul

矩陣乘法 matMatMul 矩陣乘法是基本線性代數子程序&#xff08;BLAS&#xff09;的重要組成部分&#xff0c;而且線性代數中許多其他操作以此為基礎。 圖1是兩個矩陣的乘法。 基礎方法&#xff0c;正方形tile和長方形tile 基礎方法 執行矩陣乘法的基礎方法是使用單個線程執…

Linux上web服務器搭建(Apache、Nginx)

第五章 web服務器 第一節 DNS&#xff1a;對域名進行解析&#xff0c;查詢對應的地址 1.1 web服務器簡介 www是world wide web的縮寫&#xff0c;也就是全球信息廣播的意思 1.2.網址及HTTP簡介 web服務器提供的這些數據大部分都是文件&#xff0c;那么我們需要在服務器端…

傳統視覺Transformer的替代者:交叉注意力Transformer(CAT)

傳統視覺Transformer的替代者:交叉注意力Transformer(CAT) 在深度學習的世界里,Transformer架構以其在自然語言處理(NLP)領域的卓越表現而聞名。然而,當它進入計算機視覺(CV)領域時,卻面臨著計算成本高昂和推理速度慢的雙重挑戰。現在,一項革命性的創新——交叉注意…

Qualcomm QCS6490 開發板運行高通AI Hub圖像分類程序

相關代碼可以在如下鏈接下載&#xff1a; ai-hub-models/apps/android/ImageClassification at main quic/ai-hub-models GitHub 所用硬件有&#xff1a; 1. UBUNTU20.04 2. 高通QCS6490 開發板 對下載下來的代碼進行編譯 1. ubuntu環境配置 1. python環境配置 如果你…

[SAP ABAP] 子例程

子例程 示例1 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 輸出結果如下所示 示例2 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 輸出結果如下所示 補充擴展練習 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 輸出結果如下所示 提示…

驗證圖像傳感器性能

文章目錄 驗證圖像傳感器性能 驗證圖像傳感器性能 測試類別測試項目具體方法與描述圖像質量測試分辨率測試使用分辨率測試卡&#xff08;如1951 USAF分辨率測試卡&#xff09;拍攝圖像&#xff0c;分析成像的清晰度。動態范圍測試測試傳感器在高對比度場景中的表現&#xff0c…

odoo 物聯網 設備數據采集方案

圖一 架構手稿(許老師專屬) 圖二 架構簡圖 部署 方案一&#xff1a; odoo業務數據庫與設備采集數據庫使用一個instance。 缺點&#xff1a;重啟pg服務相互影響。 方案二&#xff1a; odoo業務數據庫與設備采集數據庫獨立部署&#xff0c;使用兩個instance。 優點&#xff1a;…

RedHat / CentOS安裝FTP服務

本章教程,記錄在RedHat / CentOS中安裝FTP的具體步驟。FTP默認端口:21 1、安裝 epel 源 yum install -y epel-release2、安裝 pure-ftpd yum -y install pure-ftpd3、修改默認配置 # 默認配置位于 /etc/pure-ftpd/pure-ftpd.conf,在配置文件中找到下面幾個參數進行修改:#…

AI視頻生成技術爆發 引領虛擬數字人產業新潮流

2024年剛開局&#xff0c;先有OpenAI的AI視頻生成模型Sora驚艷全網&#xff0c;隨后阿里巴巴發布EMO&#xff0c;一張照片音頻&#xff0c;就能生成具有生動表情和各種頭部姿勢、口型完全匹配高保真的人聲頭像動態視頻。 技術的革新不僅為內容創作者打開了新世界的大門&#xf…

數據結構——隊列練習題

在C語言中&#xff0c;.和->運算符用于訪問結構體的成員變量。它們之間的區別在于&#xff1a;.運算符用于訪問結構體變量的成員。->運算符用于訪問結構體指針變量的成員 1a&#xff08;rear指向隊尾元素后一位&#xff0c;判空判滿時犧牲一個存儲單元&#xff09; 首先…

小抄 20240703

1 “這么多年&#xff0c;什么都沒有變化。” 同樣看到這句話&#xff0c;有人會覺得幸福&#xff0c;有人會覺得悲傷。 好的事沒變&#xff0c;就覺得幸福。 壞的事沒變&#xff0c;會覺得悲傷。 2 人類預測不到的大趨勢&#xff0c;只有技術大爆炸&#xff0c;關于人的那…

PEFT - 安裝及簡單使用

LLM、AIGC、RAG 開發交流裙&#xff1a;377891973 文章目錄 一、關于 PEFT二、安裝1、使用 PyPI 安裝2、使用源碼安裝 三、快速開始1、訓練2、保存模型3、推理4、后續步驟 本文翻譯整理自&#xff1a;https://huggingface.co/docs/peft/index 一、關于 PEFT &#x1f917;PEFT…

算力共享解決方案

目錄 算力共享解決方案 一、引言 二、目標 三、技術架構 一、基礎設施層 二、服務層 三、應用層 四、實施步驟 五、安全與隱私保護 六、經濟模型(信用評估-博弈論) 算力共享解決方案 一、引言 背景分析&#xff1a; 隨著大數據、人工智能、區塊鏈等技術的飛速發展&…

BugKu-WEB-sodirty

目錄 前言 正文 信息收集 代碼審計 驗證 結尾 前言 七月始,暑假副本也正式開啟 正文 信息收集 看著貌似沒啥意義 看樣子是有備份文件 下載下來 快速審計一下 代碼審計 來吧 app.js沒啥東西,主要是功能是實現error 我們找一找有沒有index.js 找到了 \www\routes\in…

MySQL的Docker部署方式

說明:Docker部署MySQL主要是簡單快速&#xff0c;不會對電腦系統造成污染。假如你的本地沒有Docker&#xff0c;或者你不會使用Docker&#xff0c;則使用PyCharm去啟動MySQL&#xff0c;或者直接在本機安裝MySQL都是可以的。最重要的是&#xff0c;你要有一個MySQL環境&#xf…

使用 Git Hooks 防止敏感信息泄露

歡迎關注公眾號&#xff1a;冬瓜白 在日常開發中&#xff0c;我們可能會不小心將敏感信息提交到 Git。為了防止這種情況&#xff0c;可以利用 Git Hooks 編寫一個簡單的腳本&#xff0c;當發現提交中包含敏感詞時&#xff0c;給出提示。 以下是一個基于 pre-commit 鉤子的示例…

踩坑:Unity導出WebGL發布到手機上豎屏時強制顯示橫屏

具體的適配問題 公司的項目需要將游戲導出WebGL 發布到Web平臺 本以為是個很簡單的事情 誰知道卻被個橫豎屏適配搞的頭暈 畢竟只有大學淺淺的學了下HTML這門語言 出來工作后基本上都是在跟C# Lua打交道 言歸正傳 看看具體問題吧 游戲如果從橫屏進入 基本上不會有什么適配問題…

C++ 多進程多線程間通信

目錄 一、進程間通信 1、管道&#xff08;Pipe&#xff09; 2、消息隊列&#xff08;Message Queue&#xff09; 3、共享內存&#xff08;Shared Memory&#xff09; 4、信號量&#xff08;Semaphore&#xff09; 5、套接字&#xff08;Socket&#xff09; 6、信號&…

Finding Global Homophily in Graph Neural Networks When Meeting Heterophily

本文發表于:ICML22 推薦指數: #paper/??? 問題背景: 異配圖的鄰接矩陣難以確定,以及異配圖的計算復雜度開銷大 可行的解決辦法:高通濾波多跳鄰居,GPRGNN(pagerank一類&#xff0c;各階鄰居的權重不同,ACM-GCN&#xff08;高低通濾波,H2GCN&#xff08;應該復雜度很大&…

碳課堂|搞清楚碳足跡,只看這篇文章就夠了

碳足跡管理是碳達峰碳中和的重要政策工具&#xff0c;2023年12月&#xff0c;國家發展改革委、工信部、國家市場監管總局、住房城鄉建設部、交通運輸部等部門聯合印發《關于加快建立產品碳足跡管理體系的意見》&#xff0c;對產品碳足跡管理各項重點任務作出系統部署。 推動碳…