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 + "]";
	}
}

下面来看看我的测试效果

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

总结

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

相关文章

  • Java设计模式中的桥接模式

    Java设计模式中的桥接模式

    这篇文章主要介绍了Java设计模式中的桥接模式,其是一种结构型设计模式,是指将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变
    2022-07-07
  • 使用eclipse创建java项目的方法

    使用eclipse创建java项目的方法

    这篇文章主要为大家详细介绍了使用eclipse创建java项目的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • java 获取已知文件扩展名的代码

    java 获取已知文件扩展名的代码

    java 编写程序获取已知文件的扩展名. 注意: abc.txt的扩展名是txt, abc.java.txt的扩展名也是txt.,需要的朋友可以参考下
    2017-02-02
  • Java BeanPostProcessor与BeanFactoryPostProcessor基础使用讲解

    Java BeanPostProcessor与BeanFactoryPostProcessor基础使用讲解

    这篇文章主要介绍了Java BeanPostProcessor与BeanFactoryPostProcessor基础使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11
  • java无锁hashmap原理与实现详解

    java无锁hashmap原理与实现详解

    本文主要介绍了java无锁hashmap原理与实现,大家参考使用吧
    2014-01-01
  • Java中常用数据类型的输入输出详解

    Java中常用数据类型的输入输出详解

    本文主要介绍了Java中几个常用的数据类型是如何输入和输出的,例如:Char型、int型、double型、数组、字符串等,对我们学习java有一定的帮助,感兴趣的小伙伴可以跟随小编一起学习学习
    2021-12-12
  • SpringBoot中使用Redis的完整实例

    SpringBoot中使用Redis的完整实例

    这篇文章主要给大家介绍了关于SpringBoot中使用Redis的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 详细讲解Java抽象类示例

    详细讲解Java抽象类示例

    这篇文章主要介绍了 Java抽象类示例,抽象类通常用于定义一些公共的方法和属性,但是这些方法没有具体的实现,需要的朋友可以参考下
    2023-05-05
  • java异步导出的实现过程

    java异步导出的实现过程

    这篇文章主要介绍了java异步导出的实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-10-10
  • 使用Javacsv.jar的jar包操作csv文件的方法

    使用Javacsv.jar的jar包操作csv文件的方法

    使用javacsv的jar包很方便的可以操作csv文件。下面通过本教程给大家介绍使用javacsv.jar操作csv文件的方法,感兴趣的朋友一起看下吧
    2016-08-08

最新评论