欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA生成UUID并作为数据库表的ID

程序员文章站 2022-06-02 13:51:01
...

在接触UUID之前,我建表用的ID一直是用的int型,然后自动增长,这样很方便。
但是这样做却有一些问题,因为数据量大的话,不可能只用一张表,而是几张表,这样会出现id重复,于是有了UUID。
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过*控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。
接下来便说一下用JAVA生成UUID并应用到数据库中的例子。

public static String getUUID() {
		String id =null;
		UUID uuid = UUID.randomUUID();
		id = uuid.toString();
		
		//去掉随机ID的短横线
		id = id.replace("-", "");
		
		//将随机ID换成数字
		int num = id.hashCode();
		//去绝对值
		num = num < 0 ? -num : num;
		
		id = String.valueOf(num);
		
		return id;
	}

jdk早已支持UUID,并可以直接使用,只需import java.util.UUID,即可直接调用UUID的静态方法randomUUID(),生成一个唯一的UUID。
但是这个UUID其实是用的16进制,而且包含了非数字字符:“-”,比如:

e3f6eec7-d9f4-4b78-b242-749851a2d922

一般我们是要去掉短横线,当然不去掉也是可以的。
去掉“-”字符,首先将UUID转化为String,然后用replace("-", “”)方法,将UUID中的“-”替换为空字符,这样就可以将UUID的短横线去掉了。

e3f6eec7d9f44b78b242749851a2d922

到这里,UUID其实也算是一串数字,可以作为ID了。
但是作为id的话,可能有些不太好看,所以我们可以将它再转换一下,变成纯数字。
比如我们可以获得目前这个字符串的哈希码,一个字符串,自然是对应一个哈希码。

int num = id.hashCode();s

hashCode()返回的是一个Int型数字,且有正负。
一般要将负号去掉:

num = num < 0 ? -num : num;

最后一般将这个数字转化为String类型,当然就用int也是可以的