java - 生成唯一 ID

标签 java mysql database uniqueidentifier

我需要为我的应用程序生成唯一 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/

相关文章:

java - 在 MySQL 数据库中存储歌曲(支持 BLOB)

Java : In ConcurrentHashMap , 如果我更改 key ,为什么会有不同的输出

java - 在 .xml 中定义时,SharedPreferences 的 defaultValue 是否始终读取为字符串?

php - 如何使用数据库表头更新 csv 列名

mysql - 如何将多个查询组合到同一个表但不同的列中?

mysql - 如何唯一标识MySql中的数据库?

java - 如何在Maven中进行自定义打包?

java - 如何从内部类返回一个值?

java - 显示从 Servlet 到 JSP 的 MySQL 查询结果

PHPExcel 阅读器——需要帮助