mybatisplus自动生成id

在 MyBatis-Plus 中,自动生成 ID 通常是通过数据库的自增(Auto Increment)字段来实现的。MyBatis-Plus 提供了几种方式来支持自动生成 ID。以下是一些常用的方法:

  1. 使用数据库自增主键

如果你的数据库表设计为使用自增主键,例如在 MySQL 中,你的表可以这样定义:

```sql

CREATE TABLE example_table (

id BIGINT AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(255) NOT NULL

);

```

在这种情况下,当你插入记录时,数据库会自动为 `id` 字段生成一个唯一的值。在 MyBatis-Plus 中,你不需要做任何特殊设置来使用这种自增主键。只需确保你的实体类中的 ID 字段与数据库表中的列对应,并且使用了正确的数据类型(例如 `Long` 类型)。

  1. 使用雪花算法(Snowflake)或其他自定义 ID 生成策略

如果你需要更复杂的 ID 生成策略,比如使用雪花算法(Snowflake)来生成全局唯一的 ID,你可以通过以下步骤实现:

添加依赖

首先,确保你的项目中包含了 MyBatis-Plus 的依赖,以及任何你选择的 ID 生成库的依赖。例如,如果你使用雪花算法,你可以添加以下依赖到你的 `pom.xml`:

```xml

<dependency>

<groupId>com.github.binarywang</groupId>

<artifactId>java-snowflake</artifactId>

<version>最新版本</version>

</dependency>

```

配置 ID 生成器

然后,你可以创建一个 ID 生成器的 Bean,并在其中实现自定义的 ID 生成逻辑。例如,使用雪花算法:

```java

import com.github.binarywang.tinyid.generator.impl.SnowflakeGenerator;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class IdGeneratorConfig {

@Bean

public SnowflakeGenerator snowflakeGenerator() {

return new SnowflakeGenerator(1, 1); // 根据实际数据中心ID和机器ID调整参数

}

}

```

在实体类中使用 ID 生成器

在你的实体类中,你可以使用 `@TableId` 注解并指定 `type` 属性为 `ASSIGN_ID` 来使用雪花算法:

```java

import com.baomidou.mybatisplus.annotation.TableId;

import com.baomidou.mybatisplus.annotation.IdType;

import java.io.Serializable;

public class ExampleEntity implements Serializable {

@TableId(type = IdType.ASSIGN_ID) // 使用雪花算法生成ID

private Long id;

private String name;

// getters and setters...

}

```

  1. 使用 UUID 生成策略

如果你希望使用 UUID 作为主键,MyBatis-Plus 也支持这种策略:

```java

import com.baomidou.mybatisplus.annotation.TableId;

import com.baomidou.mybatisplus.annotation.IdType;

import java.io.Serializable;

import java.util.UUID;

public class ExampleEntity implements Serializable {

@TableId(type = IdType.ASSIGN_UUID) // 使用UUID作为ID生成策略

private String id; // 注意这里使用String类型存储UUID字符串形式

private String name;

// getters and setters...

}

```

结论

选择哪种 ID 生成策略取决于你的具体需求。对于大多数场景,使用数据库自增主键是最简单和最有效的。如果你需要更复杂的 ID 生成策略,比如全局唯一性或者特定的格式要求,那么实现自定义的 ID 生成器可能是更好的选择。MyBatis-Plus 的灵活性和扩展性允许你轻松地实现这些需求

相关推荐
snow@li5 分钟前
SpringBoot:全套生命周期全景详解/应用级+Bean级
java·spring boot·rpc
霸道流氓气质12 分钟前
Mysql中慢 SQL 优化实战:减少不必要的 JOIN 关联
sql·mysql·mybatis
love_muming18 分钟前
二叉树操作全解析:从递归到层序遍历
java·数据结构·算法·二叉树
小的~~18 分钟前
ThreadLocal 、InheritableThreadLocal 与 TransmittableThreadLocal 的进阶指南
java·开发语言
北极糊的狐29 分钟前
钉钉小程序报错data.formatTime is not a function是因为 axml 模板中不能直接调用 Page 内自定义方法!
java·小程序·钉钉
·薯条大王10 小时前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
ZJH__GO13 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆13 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光13 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
凤山老林13 小时前
Spring Boot @Async 线上实战:从默认配置到生产级线程池治理
java·spring boot·后端