Java之String类型的有序Id批量生成器详解

 更新时间:2025年04月03日 09:30:10   作者:年月日朝朝暮暮  
这篇文章主要介绍了Java之String类型的有序Id批量生成器,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java String类型的有序Id批量生成器

做项目的时候免不了对数据库进行批量操作,比如说批量增加一批产品,批量增加一批工号。而这时候我们对于所增加的对象的自编号自然是不可能从页面由客户自己对一个个自编号进行手动输入,这样当所需要的编号达到一定数值之后就会造成极大的负担。但是将所需要增加的数量传过来由工具自动生成就很棒了。

以下是一个Id批量生成器

有需要的朋友直接拿去用就可以了:

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class IdGenerator {
	private Long currentdbidscount;
	private List<String> ids = new ArrayList<String>();
	private String idpre;
	private String yearstr;
	private String idafter;

	public IdGenerator() {
	}

	public Long getCurrentdbidscount() {
		return currentdbidscount;
	}

	public void setCurrentdbidscount(Long currentdbidscount) {
		this.currentdbidscount = currentdbidscount;
		if (null == this.ids) {
			this.ids = new ArrayList<String>();
		}
	}

	public List<String> getIds() {
		return ids;
	}

	public void setIds(List<String> ids) {
		this.ids = ids;
	}

	public String getIdpre() {
		return idpre;
	}

	public void setIdpre(String idpre) {
		this.idpre = idpre;
	}

	public String getYearstr() {
		return yearstr;
	}

	public void setYearstr(String yearstr) {
		this.yearstr = yearstr;
	}

	public String getIdafter() {
		return idafter;
	}

	public void setIdafter(String idafter) {
		this.idafter = idafter;
	}

	public List<String> initIds(Long ocounts) {
		for (int i = 0; i < ocounts; i++) {
			this.ids.add(getIdPre() + yearStr() + getIdAfter(i));
		}
		return this.ids;
	}

	//
	private String getIdAfter(int addcount) {
		// 默认生成 xx1700001
		//这里是数字部分长度
		int goallength = 5;
		//获取数据库纵向+1次循环(addcount)
		int count = this.currentdbidscount.intValue() + 1 + addcount;
		StringBuilder sBuilder = new StringBuilder("");
		//计算与五位数的差值ֵ
		int length = goallength - new String(count + "").length();
		for (int i = 0; i < length; i++) {
			sBuilder.append("0");
		}
		sBuilder.append(count + "");
		return sBuilder.toString();
	}

	private String getIdPre() {
		// idpre==null?this.idpre="xx":this.idpre=idpre;
		this.idpre = "Id-Hello-";
		return this.idpre;
	}

	private String yearStr() {
		Date currentdate = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String yearstr = sdf.format(currentdate).substring(2, 4);
		return yearstr;
	}

	public void clear() {
		this.ids = null;
	}

	@Override
	public String toString() {
		return "IdGenerator [ids=" + ids + "]";
	}
}

下面来看看我的测试效果

建议在哪里调用这个就把它写成一个内部类 。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mybatis-plus 如何使用雪花算法ID生成策略

    mybatis-plus 如何使用雪花算法ID生成策略

    这篇文章主要介绍了mybatis-plus如何使用雪花算法ID生成策略,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java中反射reflect的基础知识讲解

    Java中反射reflect的基础知识讲解

    这篇文章主要介绍了Java中反射reflect的基础知识讲解,Java中的反射,它算是Java当中非常底层的一个技术,平时我们我们用得不多,实际上它也的确非常复杂同时也难以理解,但是涉及到底层的东西Java都给我们封装好了,我们直接拿来调用即可,需要的朋友可以参考下
    2023-10-10
  • 面试必时必问的JVM 类加载机制详解

    面试必时必问的JVM 类加载机制详解

    这篇文章主要介绍了一文读懂Jvm类加载机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-08-08
  • Spring boot中@Conditional和spring boot的自动配置实例详解

    Spring boot中@Conditional和spring boot的自动配置实例详解

    本文通过实例给大家介绍了Spring boot中@Conditional和spring boot的自动配置,需要的朋友可以参考下
    2018-05-05
  • java并发访问重复请求过滤问题

    java并发访问重复请求过滤问题

    本篇文章给大家分享了关于java并发访问重复请求过滤的相关问题以及解决方法,对此有需要的朋友参考学习下。
    2018-05-05
  • java单例模式实现的方法

    java单例模式实现的方法

    这篇文章主要介绍了如何在JAVA中实现单例模式,文中代码简单易懂,供大家参考学习,感兴趣的小伙伴可以了解下
    2020-06-06
  • java web将数据导出为Excel格式文件代码片段

    java web将数据导出为Excel格式文件代码片段

    这篇文章主要为大家详细介绍了java web将数据导出为Excel格式文件代码片段,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • Java四种线程池的使用详解

    Java四种线程池的使用详解

    本篇文章主要介绍了Java四种线程池的使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Apache DolphinScheduler完全设置东八区时区

    Apache DolphinScheduler完全设置东八区时区

    这篇文章主要为大家介绍了Apache DolphinScheduler完全设置东八区配置详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java的RocketMQ之消息存储和查询原理详解

    Java的RocketMQ之消息存储和查询原理详解

    这篇文章主要介绍了Java的RocketMQ之消息存储和查询原理详解,一台Broker服务器只有一个CommitLog文件(组),RocketMQ会将所有主题的消息存储在同一个文件中,这个文件中就存储着一条条Message,每条Message都会按照顺序写入,需要的朋友可以参考下
    2024-01-01

最新评论