SpringJPA主键生成采用自定义ID,自定义ID采用年月日时间格式

自定义主键生成策略

  1. 在entity类上添加注解
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "custom-id")     @GenericGenerator(name = "custom-id", strategy = "com.h5page-mapdiy.utils.CustomIDGenerator")
    @Column(name = "id")
    public Long getId() {
        return id;
    }

注意:GeneratedValue中的generator要与GenericGenerator中的name相等 上面代码中是"custom-id"

  1. 在utils包下添加自定义ID生成类
package com.h5page-mapdiy.utils

import org.hibernate.MappingException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.id.IdentityGenerator;
import java.io.Serializable;

/**
 * 自定义ID生成器
 * @author liaoguanwang
 * @date 2019-03-16 10:33
 */
public class CustomIDGenerator extends UUIDGenerator {
    @Override
    public Serializable generate(SharedSessionContractImplementor session, Object object) throws MappingException {

        SimpleDateFormat simpleDateFormat;
        simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
        Date date = new Date();
        String str = simpleDateFormat.format(date);
        Random random = new Random();
        int rannum = (int) (random.nextDouble() * (99999 - 10000 + 1)) + 10000;// 获取5位随机数
        return rannum + str;// 当前时间
    }
}

注意:

  1. 测试的ID是Long类型所以这里继承的是IdentityGenerator类
  2. 如果ID为String类型的话应该继承 UUIDGenerator 或者 UUIDGenerator

参考:
Spring boot JPA 用自定义主键策略 生成自定义主键ID

AVA随机生成文件名:当前年月日时分秒+五位随机数

原文地址:https://www.cnblogs.com/liaoguanwang/p/10575633.html

时间: 2024-10-27 11:30:20

SpringJPA主键生成采用自定义ID,自定义ID采用年月日时间格式的相关文章

转数据库分库分表(sharding)系列(二) 全局主键生成策略

本文将主要介绍一些常见的全局主键生成策略,然后重点介绍flickr使用的一种非常优秀的全局主键生成方案.关于分库分表(sharding)的拆分策略和实施细则,请参考该系列的前一篇文章:数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示 本文原文连接: http://blog.csdn.net/bluishglc/article/details/7710738 ,转载请注明出处! 第一部分:一些常见的主键生成策略 一旦数据库被切分到多个物理结点上,我们将不能再依赖数据库自身的主键

数据库分库分表(sharding)系列(二) 全局主键生成策略

本文将主要介绍一些常见的全局主键生成策略,然后重点介绍flickr使用的一种非常优秀的全局主键生成方案.关于分库分表(sharding)的拆分策略和实施细则,请参考该系列的前一篇文章:数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示 本文原文连接: http://blog.csdn.net/bluishglc/article/details/7710738 ,转载请注明出处! 第一部分:一些常见的主键生成策略 一旦数据库被切分到多个物理结点上,我们将不能再依赖数据库自身的主键

160727、自定义hibernate主键生成策略生成字符串+数字自增长

需求:需要自增长注解如MyId0001.MyId0002.MyId0003 实现:实现这个接口org.hibernate.id.IdentifierGenerator 一.MyIdGenerator.java(测试用,实际项目中获取链接等可以改变) import java.io.Serializable; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import

hibernate id主键生成策略

数据库的设计和操作中,我们通常会给表建立主键. 主键,可以分为自然主键和代理主键. 自然主键表示:采用具有业务逻辑含义的字段作为表的主键.比如在用户信息表中,采用用户的身份证号码作为主键.但是这样一来,随着业务逻辑的变化,主键就有可能要更改.比如,假设哪天身份证号码升级成19,2位,那....... 代理主键:在表中人为的增加一个字段,该字段并没有表示任何的业务逻辑,仅仅用来标识一行数据.比如说在用户信息表中,增加一个用户ID的字段.用来表示该条用户信息的记录. 通常情况下,用的比较多的是代理主

4.ID主键生成策略

保证唯一性(auto_increment) 一.xml方式 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 6 <hib

Hibernate的ID主键生成策略

ID生成策略(一) 通过XML配置实现ID自动生成(测试uuid和native) 之前我们讲了除了通过注解的方式来创建一个持久化bean外,也可以在需要持久化的bean的包路径下创建一个与bean相同名字的hbm.xml文件来实现相同的功能! 例如: User.hbm.xml文件配置: 我们可以通过在id下指定<generator>来实现ID自动生成: <generator>的使用: class指向一个标识生成器,用于生成主键字段,以下是hibernate提供的几种常用的生成器:

【hibernate】主键生成策略使用UUID报出如下警告:org.hibernate.id.UUIDHexGenerator - HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values;

主键生成策略使用UUID报出如警告如下: 控制台- 2017-11-24 18:40:14 [restartedMain] WARN org.hibernate.id.UUIDHexGenerator - HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values; consider using org.hibernate.id.UUI

mybatis plus 主键生成 Twitter雪花算法 id 及修改id为字符型

mybatis plus配置主键生成策略为2,就是 使用Twitter雪花算法 生成id spring boot中配置为: GlobalConfiguration conf = new GlobalConfiguration(new LogicSqlInjector()); conf.setIdType(5); 这样生成的是long类型的,如果想把这个id 转为字符串类型,则配置主键生成策略为5就行了 https://gitee.com/baomidou/mybatis-plus/blob/de

Hibernate之:各种主键生成策略与配置详解

1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主键的setter方法给主键赋值,至于这个值怎么生成,完全由自己决定,这种方法应该尽量避免. <id name="id" column="id"> <generator class="assigned" /> </id&g