淺談mybatis主鍵生成的幾種策略
使用數(shù)據(jù)庫(kù)自增主鍵
對(duì)于支持自增主鍵的數(shù)據(jù)庫(kù)(如 MySQL),可以在 MyBatis 的 `` 標(biāo)簽中設(shè)置 useGeneratedKeys="true" 和 keyProperty 屬性來(lái)自動(dòng)獲取并填充生成的主鍵值。
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
使用 SELECT LAST_INSERT_ID() 函數(shù)
在插入數(shù)據(jù)后,通過(guò) SELECT LAST_INSERT_ID() 函數(shù)獲取自動(dòng)生成的主鍵值,并使用 <selectKey> 標(biāo)簽將其賦值給實(shí)體對(duì)象的屬性。
<insert id="insertUser" parameterType="User">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
<selectKey resultType="int" keyProperty="id" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
使用 UUID 生成主鍵
對(duì)于需要唯一標(biāo)識(shí)符的場(chǎng)景,可以在 Java 代碼中生成 UUID,并將其作為主鍵值傳入數(shù)據(jù)庫(kù)。
public class User {
private String id;
public User() {
this.id = UUID.randomUUID().toString();
}
}
MyBatis-Plus 提供了更簡(jiǎn)便的主鍵生成方式,如雪花算法(Snowflake)。通過(guò)在實(shí)體類中使用 @TableId 注解并配置相應(yīng)的主鍵策略,MyBatis-Plus 會(huì)自動(dòng)填充主鍵 ID。
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
//...
}
通過(guò)以上方法,MyBatis 可以根據(jù)不同的需求自動(dòng)填充主鍵 ID,簡(jiǎn)化開(kāi)發(fā)過(guò)程。
到此這篇關(guān)于淺談mybatis主鍵生成策略的文章就介紹到這了,更多相關(guān)mybatis主鍵生成內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis 自定義實(shí)現(xiàn)攔截器插件Interceptor示例
這篇文章主要介紹了mybatis 自定義實(shí)現(xiàn)攔截器插件Interceptor,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
SpringBoot集成SpirePDF實(shí)現(xiàn)文本替換功能
SpirePDF是一個(gè)用于.NET平臺(tái)的高級(jí)PDF文檔處理庫(kù),它提供了一套完整的API,允許開(kāi)發(fā)者創(chuàng)建、編輯、轉(zhuǎn)換、合并、分割和解析PDF文件本文給大家介紹了SpringBoot集成SpirePDF實(shí)現(xiàn)文本替換功能,需要的朋友可以參考下2024-09-09
詳解Java實(shí)現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片
這篇文章主要介紹了Java實(shí)現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
SpringBoot實(shí)現(xiàn)向量數(shù)據(jù)庫(kù)優(yōu)化檢索的方案及示例
在Spring?Boot中實(shí)現(xiàn)RAG(Retrieval-Augmented?Generation)的增強(qiáng),可以從檢索優(yōu)化、生成優(yōu)化和系統(tǒng)架構(gòu)三個(gè)維度進(jìn)行改進(jìn),本文給大家介紹了具體實(shí)現(xiàn)方案及示例,需要的朋友可以參考下2025-02-02
Java使用黑盒方式模擬實(shí)現(xiàn)內(nèi)網(wǎng)穿透
這篇文章主要介紹了Java使用黑盒方式模擬實(shí)現(xiàn)內(nèi)網(wǎng)穿透,內(nèi)網(wǎng)穿透,也即 NAT 穿透,進(jìn)行 NAT 穿透是為了使具有某一個(gè)特定源 IP 地址和源端口號(hào)的數(shù)據(jù)包不被 NAT 設(shè)備屏蔽而正確路由到內(nèi)網(wǎng)主機(jī),需要的朋友可以參考下2023-05-05
Java利用Spire.XLS for Java實(shí)現(xiàn)在Excel文件中添加或刪除分節(jié)符
在復(fù)雜的Excel報(bào)表中,合理設(shè)置分節(jié)符能有效提升文檔結(jié)構(gòu)與可讀性,尤其在打印輸出時(shí)效果顯著,本文將深入探討如何利用Spire.XLS for Java輕松實(shí)現(xiàn)Excel分節(jié)符的添加與刪除,希望對(duì)大家有所幫助2025-11-11
SpringMVC JSON數(shù)據(jù)傳輸參數(shù)超詳細(xì)講解
有時(shí)候參數(shù)的傳遞還需要更多的參數(shù),比如一個(gè)獲取用戶信息的請(qǐng)求中既有用戶ID等基本參數(shù),還要求對(duì)查詢結(jié)果進(jìn)行分頁(yè),針對(duì)這種場(chǎng)景,一般都會(huì)將分頁(yè)參數(shù)封裝成一個(gè)對(duì)象,然后將它和基本參數(shù)一起傳給控制器2023-02-02

