sprinboot主键自增_SpringBoot 全家桶 | MyBatisPlus(五)主键生成策略

本文详细介绍了SpringBoot结合MyBatisPlus在主键生成策略上的使用,包括数据库自增主键(AUTO)、用户输入主键(INPUT)、无状态主键(NONE)、分配ID(ASSIGN_ID)和分配UUID(ASSIGN_UUID),并提供了相应的插入操作日志示例。
摘要由CSDN通过智能技术生成

使用主键注解@TableId,加到pojo类的主键上

属性

类型

必须指定

默认值

描述

value

String

""

主键字段名

type

Enum

IdType.NONE

主键类型

IdType

描述

AUTO

数据库ID自增

NONE

无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT)

INPUT

insert前自行set主键值

ASSIGN_ID

分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法)

ASSIGN_UUID

分配UUID,主键类型为String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认default方法)

ID_WORKER

分布式全局唯一ID 长整型类型(please use ASSIGN_ID)

UUID

32位UUID字符串(please use ASSIGN_UUID)

ID_WORKER_STR

分布式全局唯一ID 字符串类型(please use ASSIGN_ID)

数据库自增主键 - AUTO

插入时不会带ID列,需要数据库设置ID自增

插入日志:

JDBC Connection [HikariProxyConnection@1681215776 wrapping com.mysql.cj.jdbc.ConnectionImpl@64b7225f] will not be managed by Spring

==> Preparing: INSERT INTO user ( name, age, email ) VALUES ( ?, ?, ? )

==> Parameters: Mimi(String), 19(Integer), mimi@163.com(String)

<== Updates: 1

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2a389173]

用户输入 - INPUT

insert前自行set主键值

插入日志:

JDBC Connection [HikariProxyConnection@952288009 wrapping com.mysql.cj.jdbc.ConnectionImpl@1a480135] will not be managed by Spring

==> Preparing: INSERT INTO user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )

==> Parameters: 9(Long), Mimi(String), 19(Integer), mimi@163.com(String)

<== Updates: 1

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@70e02081]

无状态 - NONE

未设置主键类型,类似于ASSIGN_ID

插入日志:

JDBC Connection [HikariProxyConnection@79620878 wrapping com.mysql.cj.jdbc.ConnectionImpl@6e8a9c30] will not be managed by Spring

==> Preparing: INSERT INTO user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )

==> Parameters: 1307978008895885313(Long), Mimi(String), 19(Integer), mimi@163.com(String)

<== Updates: 1

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7573e12f]

分配ID - ASSIGN_ID

默认使用插入对象ID,当插入对象ID为空时,使用雪花算法

雪花算法结构图:

雪花算法

插入日志:

JDBC Connection [HikariProxyConnection@79620878 wrapping com.mysql.cj.jdbc.ConnectionImpl@6e8a9c30] will not be managed by Spring

==> Preparing: INSERT INTO user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )

==> Parameters: 1307978926462754817(Long), Mimi(String), 19(Integer), mimi@163.com(String)

<== Updates: 1

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7573e12f]

分配UUID - ASSIGN_UUID

默认使用插入对象ID,当插入对象ID为空时,使用UUID,并去除“-”,主键类型为String

插入日志:

JDBC Connection [HikariProxyConnection@81355344 wrapping com.mysql.cj.jdbc.ConnectionImpl@9a6fbc0] will not be managed by Spring

==> Preparing: INSERT INTO dept ( id, name ) VALUES ( ?, ? )

==> Parameters: 4b0e878b5bfc2f22f44f1a3691403116(String), 研发部(String)

<== Updates: 1

Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4ae263bf]

1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值