Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在注册期间生成唯一ID_Java_Mysql_Sql - Fatal编程技术网

Java 在注册期间生成唯一ID

Java 在注册期间生成唯一ID,java,mysql,sql,Java,Mysql,Sql,我想在注册时为员工生成唯一的ID。 ID将用于用户/员工共享的实时情况,因此不应存在冲突。 像银行账户这样的东西总是独一无二的。 ID不应该是增量的。 所有ID都应该是随机的。 我将在数据库中保存生成的ID,并希望确保如果新员工注册,他们将获得唯一的ID(尚未保存在数据库中) 如果在保存新员工的过程中出现任何错误,那么我应该能够处理这种情况(意味着生成ID并不意味着它被使用。在它保存到数据库中之前,ALGO可以重用或重新创建它) 处理这种情况的最佳方法和途径是什么 要生成随机ID,还可以使用简单

我想在注册时为员工生成唯一的ID。 ID将用于用户/员工共享的实时情况,因此不应存在冲突。 像银行账户这样的东西总是独一无二的。 ID不应该是增量的。 所有ID都应该是随机的。 我将在数据库中保存生成的ID,并希望确保如果新员工注册,他们将获得唯一的ID(尚未保存在数据库中)

如果在保存新员工的过程中出现任何错误,那么我应该能够处理这种情况(意味着生成ID并不意味着它被使用。在它保存到数据库中之前,ALGO可以重用或重新创建它)


处理这种情况的最佳方法和途径是什么

要生成随机ID,还可以使用简单的可定制Java方法实现:

public String idGenerator(int length) {
    char[] chars = "abcdefghijklmnopqrstuvwxyzABCDEF"
            + "GHIJKLMNOPQRSTUVWXYZ1234567890".toCharArray();
    StringBuilder sb = new StringBuilder();
    Random random = new Random();
    for (int l = 0; l < length; l++) {
        char c = chars[random.nextInt(chars.length)];
        sb.append(c);
    }
    String id = sb.toString();
    return id;
}
公共字符串idGenerator(int-length){
char[]chars=“abcdefghijklmnopqrstuvxyzabcdef”
+“GHIJKLMNOPQRSTUVWXYZ1234567890”;
StringBuilder sb=新的StringBuilder();
随机=新随机();
对于(int l=0;l
…在添加具有特定ID的新员工之前,请检查数据库以确定其最终是否会出现


避免各种数据库中ID重复的非常有效的方法是在ID中使用当前日期字符串,例如:
yyymmdd SomeRandomString

让MySQL使用代理键,但让Java层拥有一个EmployeeIdFactory类,该类封装您想要的规则和行为。Employee类将具有持久性id和从工厂生成的id。为什么长度必须是可配置的?@Rainbolt,因为我也将使用相同的概念为其他情况生成id。@Niks你是说“其他情况”的存在需要“可配置长度id”吗?我不确定我是否遵循…@Rainbolt好的,这是造成混乱的原因,所以我已将其删除。我想在提交之前避免数据库命中以进行验证。不知道是否可能。你的答案与我的情况不完全一样。@Niks你为什么要避免数据库命中?无论如何,我看不出性能有问题。您不会每天创建数百万个唯一ID。简单地使用这个函数怎么样