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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解读Java中打印输出对象内容为什么可以不写.toString()
这篇文章主要介绍了解读Java中打印输出对象内容为什么可以不写.toString()问题,具有很的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-09-09
解决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学院整理
对于理解JVM和深入理解Java语言, 学习并了解class文件的格式都是必须要掌握的功课2017-06-06
java并发编程中的SynchronousQueue实现原理解析
这篇文章主要介绍了java并发编程中的SynchronousQueue实现原理解析,SynchronousQueue是一个比较特别的队列,此队列源码中充斥着大量的CAS语句,理解起来是有些难度的,为了方便日后回顾,本篇文章会以简洁的图形化方式展示该队列底层的实现原理,需要的朋友可以参考下2023-12-12


最新评论