小書MybatisPlus第6篇-主鍵生成策略精講

      網(wǎng)友投稿 1720 2025-04-01

      本文為mybatis系列文檔的第6篇,前5篇請(qǐng)?jiān)L問下面的網(wǎng)址。

      小書MybatisPlus第1篇-整合Springboot快速開始增刪改查

      小書MybatisPlus第2篇-條件構(gòu)造器的應(yīng)用及總結(jié)

      小書MybatisPlus第3篇-自定義SQL

      小書MybatisPlus第4篇-表格分頁(yè)與下拉分頁(yè)查詢

      小書MybatisPlus第5篇-Active Record模式精講

      Mybatis Plus 為我們提供了三種設(shè)置 主鍵生成策略的方式。它們的優(yōu)先級(jí)順序是:局部注解 > 全局 > 默認(rèn)(雪花算法)。下面我們來一一介紹

      一、默認(rèn)主鍵生成策略:雪花算法

      Mybatis Plus如果不做任何主鍵策略配置,默認(rèn)使用的是雪花算法。該策略會(huì)根據(jù)雪花算法生成主鍵ID,主鍵類型為L(zhǎng)ong或String(具體到MySql數(shù)據(jù)庫(kù)就是BIGINT和VARCHAR),該策略使用接口IdentifierGenerator的方法nextId(默認(rèn)實(shí)現(xiàn)類為DefaultIdentifierGenerator雪花算法)

      snowflake算法是Twitter開源的分布式ID生成算法,結(jié)果是一個(gè)long類型的ID 。其核心思想:使用41bit作為毫秒數(shù),10bit作為機(jī)器的ID(5bit數(shù)據(jù)中心,5bit的機(jī)器ID),12bit作為毫秒內(nèi)的流水號(hào)(意味著每個(gè)節(jié)點(diǎn)在每個(gè)毫秒可以產(chǎn)生4096個(gè)ID),最后還有一個(gè)符號(hào)位,永遠(yuǎn)是0。

      二、自定義主鍵策略

      mybatis-plus3.3.0以后,主要有五種主鍵生成策略。

      public enum IdType { /** * 數(shù)據(jù)庫(kù)ID自增,數(shù)據(jù)庫(kù)需要支持主鍵自增(如MySQL),并設(shè)置主鍵自增 */ AUTO(0), /** * 該類型為未設(shè)置主鍵類型,默認(rèn)使用雪花算法生成 */ NONE(1), /** * 用戶輸入ID,數(shù)據(jù)類型和數(shù)據(jù)庫(kù)保持一致就行 *

      該類型可以通過自己注冊(cè)自動(dòng)填充插件進(jìn)行填充

      */ INPUT(2), /* 以下3種類型、只有當(dāng)插入對(duì)象ID 為空,才自動(dòng)填充。 */ /** * 全局唯一ID (idWorker),數(shù)值類型 數(shù)據(jù)庫(kù)中也必須是數(shù)值類型 否則會(huì)報(bào)錯(cuò) */ ID_WORKER(3), /** * 全局唯一ID (UUID,不含中劃線) */ UUID(4), /** * 字符串全局唯一ID (idWorker 的字符串表示),數(shù)據(jù)庫(kù)也要保證一樣字符類型 */ ID_WORKER_STR(5); }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      三、局部注解配置策略

      我們針對(duì)主鍵設(shè)置主鍵策略使用注解方式為

      @TableId(type = IdType.AUTO) private long userId;

      1

      2

      3

      四、全局配置策略

      mybatis-plus: global-config: db-config: id-type: auto

      小書MybatisPlus第6篇-主鍵生成策略精講

      1

      2

      3

      4

      五、擴(kuò)展使用

      5.1.INPUT用戶輸入ID策略的用法

      其中需要和大家特殊介紹的是:Input(用戶輸入ID),這個(gè)ID來源可以有兩種

      用戶自己設(shè)置ID,并在insert之前SET主鍵的值

      一些有序列的數(shù)據(jù)庫(kù),比如Oracle,SQLServer等,針對(duì)這些數(shù)據(jù)庫(kù)我們可以通過序列填充ID字段

      Mybatis-Plus 內(nèi)置了如下數(shù)據(jù)庫(kù)主鍵序列(如果內(nèi)置支持不滿足你的需求,可實(shí)現(xiàn) IKeyGenerator 接口來進(jìn)行擴(kuò)展):

      DB2KeyGenerator

      H2KeyGenerator

      KingbaseKeyGenerator

      OracleKeyGenerator

      PostgreKeyGenerator

      以O(shè)racle 的Sequence使用方法為例,使用方法如下:

      首先添加@Bean

      @Bean public OracleKeyGenerator oracleKeyGenerator(){ return new OracleKeyGenerator(); }

      1

      2

      3

      4

      然后實(shí)體類配置主鍵 Sequence,指定主鍵策略為 IdType.INPUT 即可,

      @Data @KeySequence(value = "SEQ_USER" , clazz = Long.class) public class User { @TableId(value = "ID",type = IdType.INPUT) private Integer id;

      1

      2

      3

      4

      5

      6

      7

      MyBatis 數(shù)據(jù)庫(kù)

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:制造業(yè)生產(chǎn)管理軟件erp(制造業(yè)生產(chǎn)過程管理軟件)
      下一篇:《Office 2019高效辦公三合一從入門到精通 : 視頻自學(xué)版》 —1.3.2文件的打開與保存
      相關(guān)文章
      国产在亚洲线视频观看| 亚洲AV无码成人网站在线观看| 亚洲AⅤ无码一区二区三区在线| 亚洲色成人WWW永久在线观看| 亚洲午夜精品一区二区公牛电影院| 亚洲一区影音先锋色资源| 亚洲精品自产拍在线观看动漫| 亚洲av中文无码乱人伦在线播放| 亚洲精品高清国产一线久久| 亚洲精品美女久久久久99| 亚洲精品亚洲人成人网| 亚洲日韩在线观看| 自拍偷自拍亚洲精品情侣| 亚洲乱码中文字幕久久孕妇黑人| 亚洲日韩精品一区二区三区无码| 亚洲欭美日韩颜射在线二| 亚洲人成网7777777国产| 亚洲第一AV网站| 亚洲一区二区电影| 亚洲高清在线mv| 亚洲第一香蕉视频| 亚洲一区中文字幕在线观看| www.亚洲日本| 亚洲精品av无码喷奶水糖心| 激情小说亚洲色图| 亚洲天堂在线视频| 国产V亚洲V天堂无码久久久| 久久精品亚洲中文字幕无码网站 | 亚洲av无码专区首页| 亚洲 无码 在线 专区| 亚洲А∨精品天堂在线| 亚洲永久精品ww47| 一区二区三区亚洲| 亚洲AV无码国产精品色| 亚洲另类自拍丝袜第五页| 免费观看亚洲人成网站| 在线亚洲精品福利网址导航| 亚洲AV成人片色在线观看高潮| 亚洲天天做日日做天天欢毛片| 亚洲AV综合色区无码二区偷拍| 亚洲a∨无码精品色午夜|