淺談mybatis主鍵生成的幾種策略
使用數(shù)據(jù)庫(kù)自增主鍵
對(duì)于支持自增主鍵的數(shù)據(jù)庫(kù)(如 MySQL),可以在 MyBatis 的 `` 標(biāo)簽中設(shè)置 useGeneratedKeys="true" 和 keyProperty 屬性來自動(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ù)后,通過 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)。通過在實(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;
//...
}
通過以上方法,MyBatis 可以根據(jù)不同的需求自動(dòng)填充主鍵 ID,簡(jiǎn)化開發(fā)過程。
到此這篇關(guān)于淺談mybatis主鍵生成策略的文章就介紹到這了,更多相關(guān)mybatis主鍵生成內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java使用線程實(shí)現(xiàn)異步運(yùn)行的方法
在Java中,實(shí)現(xiàn)異步運(yùn)行的一個(gè)常用方式是使用Thread類,這篇文章主要介紹了Java使用線程實(shí)現(xiàn)異步運(yùn)行,需要的朋友可以參考下2024-07-07
Mybatis執(zhí)行插入語(yǔ)句后并返回主鍵ID問題
這篇文章主要介紹了Mybatis執(zhí)行插入語(yǔ)句后并返回主鍵ID問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
詳細(xì)分析Java并發(fā)集合LinkedBlockingQueue的用法
這篇文章主要介紹了詳細(xì)分析Java并發(fā)集合LinkedBlockingQueue的用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
java堆棧類使用實(shí)例(java中stack的使用方法)
java中stack的使用方法,堆棧是一種"后進(jìn)先出"(LIFO) 的數(shù)據(jù)結(jié)構(gòu), 只能在一端進(jìn)行插入(稱為"壓棧") 或刪除 (稱為"出棧")數(shù)據(jù)的操作,下面看示例吧2013-12-12
Java中為什么this可以調(diào)用當(dāng)前實(shí)例
本文主要介紹了為什么可以通過this關(guān)鍵字訪問到當(dāng)前對(duì)象呢,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
SpringBoot綁定配置文件中變量的四種方式總結(jié)
當(dāng)在Spring Boot中需要綁定配置文件中的變量時(shí),可以使用以下注解:@PropertySourc,@Value,@Environment,@ConfigurationProperties,具體實(shí)現(xiàn)代碼示例文中講解的非常詳細(xì),需要的朋友可以參考下2023-11-11
Java使用Spire.Doc實(shí)現(xiàn)讀取或刪除Word文檔屬性
在日常的文檔處理工作中,Word 文檔的屬性扮演著重要角色,本文將介紹如何使用 Spire.Doc for Java 這一開源組件,以編程方式讀取和刪除 Word 文檔中的內(nèi)置屬性與自定義屬性,感興趣的小伙伴可以了解下2026-03-03

