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

在接触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也是可以的

猜你喜欢

转载自blog.csdn.net/weixin_42486795/article/details/87212471