mybatisplus之主键生成策略

Y-wee      2022-04-03     523

关键词:

mybatisplus之主键生成策略

mybatisplus支持多种主键生成策略,默认采用认 ID_WORKER 即雪花算法

  • 雪花算法

snowflflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。可以保证几乎全球唯一!

mybatisplus默认主键生成策略有可能会和我们的数据库产生冲突,导致插入数据失败;当遇到这种情况时,我们需要自己配置主键生成策略,在实体类对应主键加注解

package com.yl.bean;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 用户实体类
 */
@Data
@NoArgsConstructor
public class User implements Serializable {
    @TableId(type=IdType.AUTO)//配置主键
    private Integer id;
    private String name;
    private Integer age;
    private String email;
    @TableField(fill = FieldFill.INSERT )//插入数据时更新该字段
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)//插入和修改时更新该字段
    private Date updateTime;
}

主键生成类型源码解释

public enum IdType { 
    AUTO(0), // 数据库id自增,选择这种类型数据库表主键要设置为自增 
    NONE(1), // 未设置主键 
    INPUT(2), // 手动输入 
    ID_WORKER(3), // 默认的全局唯一id
    UUID(4), // 全局唯一id 
    uuid ID_WORKER_STR(5); //ID_WORKER 字符串表示法 }

flea-db使用之主键生成器表介绍(代码片段)

主键生成器表介绍本篇介绍JPA规范下的主键生成器表,相关主键生成策略可查看JPA主键生成策略介绍。1.表结构MySQL下的flea_id_generator表结构:字段名称类型长度id_generator_keyID生成器的键【即主键生成策略的键值名称】varch... 查看详情

mybatisplus新版本springboot集成mybatisplus主键生成策略(代码片段)

...解@TableId(type=IdType.x)源码TableId.classpackagecom.baomidou.mybatisplus.annotation;importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Document... 查看详情

mybatisplus新版本springboot集成mybatisplus主键生成策略(代码片段)

...解@TableId(type=IdType.x)源码TableId.classpackagecom.baomidou.mybatisplus.annotation;importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Document... 查看详情

[mybatisplus]常用注解_@tablename_@tableid_@tablefield_@tablelogic&&通过全局配置配置主键生成策略

常用注解@TableName设置实体类所对应的表名如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗?我们可以通过配置文件来解决这个问题:@TableId将属性所对应的字段指定为... 查看详情

[mybatisplus]常用注解_@tablename_@tableid_@tablefield_@tablelogic&&通过全局配置配置主键生成策略(代码片段)

常用注解@TableName设置实体类所对应的表名如果全部表都有某个前缀,难道我们要通过一个一个加注解的方式来解决实体类对应表名问题吗?我们可以通过配置文件来解决这个问题:@TableId将属性所对应的字段指定为... 查看详情

mybatisplus快速入门常用设置(表映射主键策略日志)基本使用(代码片段)

(目录)MybatisPlus基础篇1.概述​ MybatisPlus是一款Mybatis增强工具,用于简化开发,提高效率。它在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。​ 官网:https://mp.baomidou.com/2.快速入门2.0准备工作①准备数据CREATETABL... 查看详情

主键生成策略----hibernate框架学习

...配置文件,而在实体类的映射文件配置中有一个配置项是主键生成策略,当时并没有深入地学习,只是知道常用的有“native”的生成策略,那么,轻风暖云今天将会对主键生成策略的几个策略属性进行详细学习和记录。主键生成... 查看详情

mybatisplus是啥

参考技术AMyBatis-Plus (opensnewwindow)(简称MP)是一个 MyBatis (opensnewwindow)的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响... 查看详情

hibernate主键生成策略

Hibernate主键生成策略1hibernate要求实体类里面有一个属性作为唯一值,对应表主键,主键可以不同生成策略 2hibernate主键生成策略有很多的值 3在class属性里面有很多值(1)native:根据使用的数据库帮选择哪个值  (... 查看详情

主键生成策略

1、hibernate的主键生成策略:   increment:hibernate自动递增的方式生成主键值,没有其它进程向同一张表中插入数据时才可以使用,不是个集群使用  identity:采用数据库本身提供的主键生成标识符,要求数据库支持主键自增... 查看详情

解决:mysql表设置bigint主键自增,而使用mybatisplus插入数据主键出现随机值

记录BUG:在创建表时没有设置好主键自增,使用MybatisPlusX逆向生成工程代码;后面将表设置主键自增后,向表中插入数据,发现MybatisPlus给主键生成了一个随机值,多次插入也并没有自增。原因:在修... 查看详情

三大框架之hibernate生成策略与缓存策略(主键生成策略持久化持久化类划分一级缓存事物管理)

目录Hibernate生成策略与缓存策略主键生成策略主键分类主键的生成策略持久化什么是持久化什么是持久化类持久化类编写规则持久化类的划分三种状态区分持久态对象特征一级缓存什么是缓存一级缓存一级缓存特点一级缓存内部... 查看详情

oracle之主键(primarykey)用法详解

工作中用的数据库是Oracle,建表是说用复合主键,博主不是很懂啊(主键还有复合主键),才发现主键这块很是薄弱,查完资料,特写一篇博客记录一下。什么是主键主键(primarykey)是表中的一个或多个... 查看详情

解决:mysql表设置bigint主键自增,而使用mybatisplus插入数据主键出现随机值

记录BUG:在创建表时没有设置好主键自增,使用MybatisPlusX逆向生成工程代码;后面将表设置主键自增后,向表中插入数据,发现MybatisPlus给主键生成了一个随机值,多次插入也并没有自增。原因:在修... 查看详情

解决:mysql表设置bigint主键自增,而使用mybatisplus插入数据主键出现随机值

记录BUG:在创建表时没有设置好主键自增,使用MybatisPlusX逆向生成工程代码;后面将表设置主键自增后,向表中插入数据,发现MybatisPlus给主键生成了一个随机值,多次插入也并没有自增。原因:在修... 查看详情

jpa注解主键生成策略-uuid

@GeneratedValue:主键的产生策略,通过strategy属性指定。  主键产生策略通过GenerationType来指定。GenerationType是一个枚举,它定义了主键产生策略的类型。  1、AUTO 自动选择一个最适合底层数据库的主键生成策略。如MySQL会自动... 查看详情

jpa主键生成策略

@GeneratedValue:  为一个实体类生成一个唯一标识的主键(JPA要求每一个实体Entity,必须有且只有一个主键)。它有两个属性,分别是strategy和generator。  generator:默认为空字符串,它定义了主键生成器的名称,对应的生成器有两... 查看详情

hibernate生成策略和缓存策略(代码片段)

主键生成策略一、主键分类1.自然主键主键本身就是表中的一个字段,实体中一个具体的属性,对象本身唯一的特性比如:创建一个学生表:姓名、年龄、身份证号(自然主键)2.代理主键主键本身不是表中必须的一个字段同样... 查看详情