Docker 的優(yōu)點(diǎn)
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
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)容。