@TableId 是 MyBatis-Plus 提供的一个注解,用于标识实体类中的主键字段。它可以帮助 MyBatis-Plus
在执行数据库操作时正确地识别和处理主键字段。

下面是对 @TableId 注解的详细解析:

@TableId 注解详解

1. 基本用途

标识主键:@TableId 注解用于标记实体类中的某个字段为主键字段。 自动生成策略:可以指定主键的生成策略,如自增、UUID 等。

2. 属性

value:主键字段的名称,默认值为字段名。 type:主键生成策略,常用的有以下几种:
IdType.AUTO:自动增长(适用于自增主键)。 IdType.NONE:不指定主键生成策略,需要手动赋值。
IdType.ASSIGN_ID:使用雪花算法生成唯一 ID(Long 类型)。 IdType.ASSIGN_UUID:使用 UUID
生成唯一 ID(String 类型)。 IdType.INPUT:手动输入主键值。

3. 示例

示例 1:基本用法

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("sys_job_log")
public class SysJobLog {

    @TableId
    private String jobLogId;

    private String jobName;
    private String jobGroup;
    private String invokeTarget;
    private String jobMessage;
    private String status;
    private String exceptionInfo;
    private Date createTime;

    // 其他字段和方法
}

在这个示例中,jobLogId 字段被标记为主键,但没有指定生成策略,因此默认为 IdType.AUTO。

示例 2:指定生成策略

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("sys_job_log")
public class SysJobLog {

    @TableId(value = "job_log_id", type = IdType.ASSIGN_UUID)
    private String jobLogId;

    private String jobName;
    private String jobGroup;
    private String invokeTarget;
    private String jobMessage;
    private String status;
    private String exceptionInfo;
    private Date createTime;

    // 其他字段和方法
}

在这个示例中,jobLogId 字段被标记为主键,并且指定了生成策略为 IdType.ASSIGN_UUID,即使用 UUID 生成唯一
ID。

使用场景

1.自增主键:

   @TableId(type = IdType.AUTO)
   private Long id;
   

2.UUID 主键:

   @TableId(type = IdType.ASSIGN_UUID)
   private String id;
   

3.手动赋值主键:

@TableId(type = IdType.INPUT)
private String customId;

注意事项

字段类型:

IdType.ASSIGN_ID 适用于 Long 类型的主键。 IdType.ASSIGN_UUID 适用于 String 类型的主键。

数据库兼容性:

不同的数据库对主键生成策略的支持可能有所不同,例如 MySQL 支持自增主键,而 Oracle 需要使用序列。

唯一性:

确保生成的主键值在数据库中是唯一的,以避免主键冲突。 通过使用 @TableId
注解,你可以灵活地管理和配置实体类中的主键字段,从而更好地与数据库进行交互。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐