我需要为我的应用程序生成唯一 ID。当我使用 (UUID.randomUUID()).toString()
时,我得到了一个代码(认为这将是唯一的),它非常冗长。
当我们借助 Java Timestamp 或 randomstring 生成代码时,我不确定它会有多独特。
我需要生成长度仅为8-10 个字符(字母数字)的唯一代码。如何得到呢? 我正在使用 MySQL 数据库。
在数据库端生成唯一代码是最好的方法还是我们可以在 Java 中生成如此短(但唯一)的代码?
任何带有示例代码的建议都将非常有帮助。
最佳答案
我使用 commons-lang
中的 RandomStringUtils.randomAlphanumeric()
方法来实现这一点:
import org.apache.commons.lang.RandomStringUtils;
public static final int ID_LENGTH = 10;
public String generateUniqueId() {
return RandomStringUtils.randomAlphanumeric(ID_LENGTH);
}
如果您使用 Maven,请确保您已将 commons-lang
添加到项目的依赖项中:
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
Is generating unique code on database side is the best way or can we generate such short (but unique) codes in java?
这取决于您和您的项目。身份生成是业务逻辑的一部分吗?如果是,并且所有逻辑都用 Java 编写,那么就用 Java 编写。如果所有或部分逻辑委托(delegate)给数据库,那么在那里生成id(但在这种情况下你将对特定数据库有很强的依赖性)。
关于java - 生成唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9060428/