当前位置: 首页 > news >正文

@TableId注解详细介绍

@TableId注解是专门用在主键上的注解,如果数据库中的主键字段名和实体中的属性名,不一样且不是驼峰之类的对应关系,可以在实体中表示主键的属性上加@Tableid注解,并指定@Tableid注解的value属性值为表中主键的字段名既可以对应上。

比如数据中的表中的字段是vote_id,但是实体类是voteId。那么就需要在voteId上打上这个注解,如下:

/** 主键 */@TableId("vote_id")@TableId(value = "vote_id")private Long voteId;


@TableId注解源码

package com.baomidou.mybatisplus.annotation;import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface TableId {String value() default "";IdType type() default IdType.NONE;
}


@TableId注解使用介绍
从源码可以看出,设置主键映射时:
value映射主键字段的名字
type 设置主键类型、主键的生成策略

描述
AUTO数据库自增
NONEMP set主键,雪花算法实现
INPUT需要手动赋值
ASSIGN_IDMP分配ID,Long、Integer、String
ASSIGN_UUID分配UUID,String

数据库自增 AUTO
开发者无需赋值,自己根据当前表中id最大值自增+1
手动赋值的话还是使用数据库id中最大值+1 的方式赋予id

public class VoteInfo extends MybatisPlusBaseEntity {@TableId(type = IdType.AUTO)private Long voteId;
}


自动生成主键 使用雪花算法 NONE
配合新增使用 用的时候需要注意主键长度 但是MyBatisPlus3.20的时候是采取该字段最大值+1,数据类型改int为long,注意雪花id生成的长度否则会报错,同时如果主键如果数据类型为int需要修改成Long。

public class VoteInfo extends MybatisPlusBaseEntity {@TableId(type = IdType.NONE)private Long voteId;
}


开发者手动赋值 INPUT

如果插入操作中,没有对id进行赋值,那么存进数据库中的将为0(long)数据库一般会采取自增id的方式处理 当前数据库编号的值+1。如果赋值了,就用开发者所赋的值。

ASSIGN_ID
等同于ID_ WORKER(3) ,ID_ WORKER STR(3) ,使用mp自动赋值 采取雪花算法,但是MyBatisPlus3.20的时候是采取该字段最大值+1

ASSIGN_ID
等同于UUID,要求主键类型必须是String类型,会自动生成UUID进行赋值,需要考虑数据库的字段设计,数据库中的int类型的,所以存不进去,但因为主键自增,如果要修改int类型为varchar类型的话,需要去除主键自增。

http://www.lryc.cn/news/14147.html

相关文章:

  • kubectl常用的命令
  • Linux 配置远程SSH服务(密码+密钥)
  • WuThreat身份安全云-TVD每日漏洞情报-2023-02-20
  • 面试经常被问悲观锁和乐观锁?什么是cas?来我花3分钟时间告诉你
  • React源码分析3-render阶段(穿插scheduler和reconciler)
  • 3功能测试心得分享
  • Python-推导式
  • 操作系统线程
  • vue3中如何定义响应式变量
  • 【C++修炼之路】20.手撕红黑树
  • 树状数组(高级数据结构)-蓝桥杯
  • Flink-多流转换(Union、Connect、Join)
  • kubeadmin安装k8s集群
  • java3月train笔记
  • Apollo Config原理浅析
  • Kubernetes二 Kubernetes之实战以及pod详解
  • 机械革命黑苹果改造计划第四番-外接显示器、win时间不正确问题解决
  • Linux docker(03)可使用GPU渲染的x11docker实战总结
  • 【Linux操作系统】【综合实验一 Linux操作基础】
  • 关于监控服务器指标、CPU、内存、警报的一些解决方案
  • vue3全家桶技术栈基础(一)
  • 群晖-第2章-设置HTTPS访问
  • 005 利用fidder抓取app的api,获得股票数据
  • 京东测试进阶之路:初入测试碎碎念篇
  • 华为OD机试 - 乘积最大值(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
  • Java并发知识点
  • 前端 ES6 环境下 require 动态引入图片以及问题
  • PCL 欧氏聚类分割
  • 一台服务器最大能支持多少条TCP连接
  • Teradata退出中国,您可以相信中国数据库!