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也是可以的
上一篇: Flash动画制作_经典问答20条
下一篇: Merge与Rebase的区别