java中常用注解@TableId的详细解析

 更新时间:2025年06月10日 09:52:29   作者:东方巴黎~Sunsiny  
@TableId注解是一种常见的Java注解,通常在使用关系型数据库进行对象关系映射(ORM)时使用,这篇文章主要介绍了java中常用注解@TableId的详细解析,文中通过代码介绍的非常详细,需要的朋友可以参考下

@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
注解,你可以灵活地管理和配置实体类中的主键字段,从而更好地与数据库进行交互。

总结 

到此这篇关于java中常用注解@TableId详细解析的文章就介绍到这了,更多相关java注解@TableId内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈String.split()遇到空字符串的几种情况

    浅谈String.split()遇到空字符串的几种情况

    这篇文章主要介绍了浅谈String.split()遇到空字符串的几种情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • java实战之飞机大战小游戏(源码加注释)

    java实战之飞机大战小游戏(源码加注释)

    这篇文章主要介绍了java实战之飞机大战小游戏(源码加注释),文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 解读Java中打印输出对象内容为什么可以不写.toString()

    解读Java中打印输出对象内容为什么可以不写.toString()

    这篇文章主要介绍了解读Java中打印输出对象内容为什么可以不写.toString()问题,具有很的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 解决MyBatis报错:There is no getter for property named'Xxx'in'class xxx.xxx.Xxx'

    解决MyBatis报错:There is no getter for 

    这篇文章主要介绍了解决MyBatis报错:There is no getter for property named'Xxx'in'class xxx.xxx.Xxx'问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 深入理解Java class文件格式_动力节点Java学院整理

    深入理解Java class文件格式_动力节点Java学院整理

    对于理解JVM和深入理解Java语言, 学习并了解class文件的格式都是必须要掌握的功课
    2017-06-06
  • SpringMVC对日期类型的转换示例

    SpringMVC对日期类型的转换示例

    本篇文章主要介绍了SpringMVC对日期类型的转换示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Java结合Spark的数据清洗场景及对应的实现方法

    Java结合Spark的数据清洗场景及对应的实现方法

    在大数据处理中,数据清洗是非常重要的一步,数据清洗可以帮助我们去除脏数据、处理缺失值、规范数据格式等,以确保数据质量和准确性,在本文中,我们将介绍如何使用Java结合Spark框架来实现数据清洗,需要的朋友可以参考下
    2025-05-05
  • Java 细致图解带你分析汉诺塔

    Java 细致图解带你分析汉诺塔

    汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。本文将用Java求解这一问题,感兴趣的可以学习一下
    2022-03-03
  • java并发编程中的SynchronousQueue实现原理解析

    java并发编程中的SynchronousQueue实现原理解析

    这篇文章主要介绍了java并发编程中的SynchronousQueue实现原理解析,SynchronousQueue是一个比较特别的队列,此队列源码中充斥着大量的CAS语句,理解起来是有些难度的,为了方便日后回顾,本篇文章会以简洁的图形化方式展示该队列底层的实现原理,需要的朋友可以参考下
    2023-12-12
  • java Long==Long有趣的现象详解

    java Long==Long有趣的现象详解

    这篇文章主要给大家介绍了关于java Long==Long有趣的现象的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09

最新评论