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

MybatisPlus 主鍵策略之type=IdType.ASSIGN_ID等詳解

 更新時(shí)間:2024年04月23日 09:41:29   作者:DN金猿  
雪花算法(雪花)是微博開源的分布式ID生成算法其核心思想就是:使用一個(gè)64位的長型的數(shù)字作為全局唯一ID,這篇文章主要介紹了MybatisPlus 主鍵策略(type=IdType.ASSIGN_ID等詳解),需要的朋友可以參考下

主鍵策略

我們可以通過@TableId注解的 類型屬性來設(shè)置主鍵id的增長策略,一共有幾個(gè)多個(gè)主鍵策略,可根據(jù)情況自由配置。

1,ASSIGN_ID(雪花算法)    

如果不設(shè)置類型值,默認(rèn)則使用IdType.ASSIGN_ID策略(自3.3.0起)。該策略會(huì)使用雪花算法自動(dòng)生成主鍵ID,主鍵類型為長或字符串(分別對(duì)應(yīng)的MySQL的表字段為BIGINT和VARCHAR)

提示:該策略使用接口IdentifierGenerator的方法nextId(以實(shí)現(xiàn)類為DefaultIdentifierGenerator雪花算法),下面是雪花算法介紹:

雪花算法(雪花)是微博開源的分布式ID生成算法其核心思想就是:使用一個(gè)64位的長型的數(shù)字作為全局唯一ID。在分布式系統(tǒng)中的應(yīng)用十分廣泛,且ID引入了時(shí)間戳,基本上保持自增的。

@Data
public class UserInfo {
    //指定主鍵生成策略使用雪花算法(默認(rèn)策略)
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;
    private String userName;
    private String passWord;
}

2,ASSIGN_UUID(排除中劃線的UUID)

    如果使用IdType.ASSIGN_UUID策略,并重新自動(dòng)生成排除中劃線的UUID作為主鍵。主鍵類型為String,對(duì)應(yīng)MySQL的表分段為VARCHAR(32)

提示:該策略使用接口IdentifierGenerator的方法nextUUID

@Data
public class UserInfo {
    //指定主鍵生成策略為不含中劃線的UUID
    @TableId(type = IdType.ASSIGN_UUID)
    private String id;
    private String userName;
    private String passWord;
}

3,AUTO(數(shù)據(jù)庫ID自增)

對(duì)于像MySQL這樣的支持主鍵自動(dòng)遞增的數(shù)據(jù)庫,我們可以使用IdType.AUTO策略。

@Data
public class UserInfo {
    //指定主鍵使用數(shù)據(jù)庫ID自增策略
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String userName;
    private String passWord;
}

4,INPUT(插入前自行設(shè)置主鍵值)

(1)針對(duì)有序列的數(shù)據(jù)庫:Oracle,SQLServer等,當(dāng)需要建立一個(gè)自增序列時(shí),需要用到序列。

提示:

  • 在Oracle 11g中,設(shè)置自增擴(kuò),需要先創(chuàng)建序列(SQUENCE)再創(chuàng)建一個(gè)觸發(fā)器(TRIGGER)。
  • 在Oracle 12c中,只需要使用IDENTITY屬性就可以了,和MySQL一樣簡單。

(2)Mybatis -Plus已經(jīng)定義好了常見的數(shù)據(jù)庫主鍵序列,我們首先只需要在@Configuration類中定義好@Bean:Mybatis -Plus內(nèi)置了如下數(shù)據(jù)庫主鍵序列(如果內(nèi)置支持不滿足你的需求,可實(shí)現(xiàn)IKeyGenerator接口來進(jìn)行擴(kuò)展):

  • DB2KeyGenerator
  • H2KeyGenerator
  • KingbaseKeyGenerator
  • Oracle密鑰生成器
  • PostgreKeyGenerator
@Bean
public OracleKeyGenerator oracleKeyGenerator(){
    return new OracleKeyGenerator();
}

提示:支持父類定義@KeySequence子類使用,這樣就可以幾個(gè)表共享一個(gè)Sequence
(3)然后實(shí)體類配置主鍵Sequence,指定主鍵策略為IdType.INPUT即可:

(4)如果主鍵是String類型的,也可以使用:如何使用序列作為主鍵,但是實(shí)體主鍵類型是字符串開頭,表的主鍵是varchar2,但是需要從序列中取值

@TableName("TEST_SEQUSER")
@KeySequence("SEQ_TEST")//類注解
public class TestSequser{
  @TableId(value = "ID", type = IdType.INPUT)
  private Long id;
}
  • 實(shí)體定義@KeySequence注解clazz指定類型String.class
  • 實(shí)體定義主鍵的類型字符串
  • 注意:oracle的序列返回的是Long類型,如果主鍵類型是Integer,可能會(huì)引起ClassCastException
@KeySequence(value = "SEQ_ORACLE_STRING_KEY", clazz = String.class)
public class YourEntity{
    @TableId(value = "ID_STR", type = IdType.INPUT)
    private String idStr;
    ...
}

5,無(無狀態(tài))

如果使用IdType.NONE策略,表示未設(shè)置主鍵類型(注解里等于跟隨上下,左右里約等于INPUT)

附:變量策略配置

    假設(shè)我們希望完全全部都使用AUTO策略(數(shù)據(jù)庫ID自增),那么可以在 application.properties中添加如下配置進(jìn)行修改:

mybatis-plus.global-config.db-config.id-type=auto

參考資料

地址:https://www.hangge.com/blog/cache/detail_2904.html

到此這篇關(guān)于MybatisPlus 主鍵策略(type=IdType.ASSIGN_ID等詳解)的文章就介紹到這了,更多相關(guān)MybatisPlus 主鍵策略內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實(shí)現(xiàn)word轉(zhuǎn)pdf or直接生成pdf文件

    java實(shí)現(xiàn)word轉(zhuǎn)pdf or直接生成pdf文件

    這篇文章主要介紹了java實(shí)現(xiàn)word轉(zhuǎn)pdf or直接生成pdf文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Mybatis一對(duì)多關(guān)聯(lián)關(guān)系映射實(shí)現(xiàn)過程解析

    Mybatis一對(duì)多關(guān)聯(lián)關(guān)系映射實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Mybatis一對(duì)多關(guān)聯(lián)關(guān)系映射實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java的SimpleDateFormat線程不安全的幾種解決方案

    java的SimpleDateFormat線程不安全的幾種解決方案

    但我們知道SimpleDateFormat是線程不安全的,處理時(shí)要特別小心,要加鎖或者不能定義為static,要在方法內(nèi)new出對(duì)象,再進(jìn)行格式化,本文就介紹了幾種方法,感興趣的可以了解一下
    2021-08-08
  • 詳解SpringBoot下文件上傳與下載的實(shí)現(xiàn)

    詳解SpringBoot下文件上傳與下載的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot下文件上傳與下載的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 實(shí)時(shí)計(jì)算知多少?

    實(shí)時(shí)計(jì)算知多少?

    這篇文章對(duì)滑動(dòng)窗口計(jì)數(shù)的概念和關(guān)鍵代碼做了較為詳細(xì)解釋,讓我們對(duì)實(shí)時(shí)計(jì)算這一概念有了更深的了解,需要的朋友可以參考下
    2015-07-07
  • 如何使用@Slf4j和logback-spring.xml搭建日志框架

    如何使用@Slf4j和logback-spring.xml搭建日志框架

    這篇文章主要介紹了如何使用@Slf4j和logback-spring.xml搭建日志框架問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 詳解Spring @Autowired 注入小技巧

    詳解Spring @Autowired 注入小技巧

    這篇文章主要介紹了詳解Spring @Autowired 注入小技巧,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • Java實(shí)現(xiàn)快速排序算法可視化的示例代碼

    Java實(shí)現(xiàn)快速排序算法可視化的示例代碼

    快速排序算法通過多次比較和交換來實(shí)現(xiàn)排序,是對(duì)冒泡排序算法的一種改進(jìn)。本文將用Java語言實(shí)現(xiàn)快速排序算法并進(jìn)行可視化,感興趣的可以了解一下
    2022-08-08
  • 如何把JAR發(fā)布到maven中央倉庫的幾種方法

    如何把JAR發(fā)布到maven中央倉庫的幾種方法

    這篇文章主要介紹了如何把JAR發(fā)布到maven中央倉庫的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • java 過濾器模式(Filter/Criteria Pattern)詳細(xì)介紹

    java 過濾器模式(Filter/Criteria Pattern)詳細(xì)介紹

    這篇文章主要介紹了java 過濾器模式(Filter/Criteria Pattern)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-10-10

最新評(píng)論

禹城市| 丁青县| 萍乡市| 西和县| 即墨市| 沙河市| 固镇县| 西青区| 渭源县| 九龙城区| 大英县| 抚顺县| 花垣县| 梓潼县| 麻城市| 兴化市| 张北县| 河间市| 噶尔县| 洪雅县| 泉州市| 永吉县| 托克逊县| 哈巴河县| 石阡县| 元阳县| 浮山县| 镇雄县| 黔南| 来凤县| 卓资县| 阳泉市| 铜陵市| 元氏县| 乐业县| 体育| 逊克县| 莱阳市| 平顶山市| 盐池县| 河北省|