当前位置: 首页 > 知识库问答 >
问题:

字母数字序列生成器

奚光霁
2023-03-14

如何像
Rxt-AA0001
Rxt-AA0002
Rxt-AA0003
...
...
Rxt-AA9999
Rxt-AB0001
Rxt-AB0002

用这个

public class UserIdGenerator extends SequenceStyleGenerator {
 
    public static final String VALUE_PREFIX_PARAMETER = "valuePrefix";
    public static final String VALUE_PREFIX_DEFAULT = "";
    private String valuePrefix;
 
    public static final String NUMBER_FORMAT_PARAMETER = "numberFormat";
    public static final String NUMBER_FORMAT_DEFAULT = "%d";
    private String numberFormat;
 
    @Override
    public Serializable generate(SharedSessionContractImplementor session,
            Object object) throws HibernateException {
        return valuePrefix + String.format(numberFormat, super.generate(session, object));
    }
 
    @Override
    public void configure(Type type, Properties params,
            ServiceRegistry serviceRegistry) throws MappingException {
        super.configure(LongType.INSTANCE, params, serviceRegistry);
        valuePrefix = ConfigurationHelper.getString(VALUE_PREFIX_PARAMETER,
                params, VALUE_PREFIX_DEFAULT);
        numberFormat = ConfigurationHelper.getString(NUMBER_FORMAT_PARAMETER,
                params, NUMBER_FORMAT_DEFAULT);
    }
 
}

这是我在模型中的用户id

    @Id
    @GeneratedValue(generator = "user_seq_generator", strategy = GenerationType.SEQUENCE)
    @GenericGenerator(name = "user_seq_generator", strategy = "user.util.UserIdGenerator", parameters = {
            @Parameter(name = UserIdGenerator.INCREMENT_PARAM, value = "1"),
            @Parameter(name = UserIdGenerator.VALUE_PREFIX_PARAMETER, value = "RxT-AA"),
            @Parameter(name = UserIdGenerator.NUMBER_FORMAT_PARAMETER, value = "%04d") })
    @Column(name = "user_id")
    private String Id;

我能够生成Alpha数字id,但我不确定如何增加字符

共有2个答案

赖运珧
2023-03-14

它可以很简单地完成——参见下面的课程。

然而,根据目的,使用UUID可能更有益,如@某人所建议的

import java.util.Arrays;

public class AlphaNumber {
    public static char[] ALPHA_NUMBER_CHARS = "0123ABC".toCharArray(); // add here your characters
    private int[] number = new int[32]; // here you control the maximum size of the number
    private int size = 0; // here we control the actual size of the number

    public AlphaNumber() {
        Arrays.fill(number,0);
    }

    public String inc() {
        for(int i=0;i<=size;i++) {
            number[i]++;
            if (number[i] < ALPHA_NUMBER_CHARS.length) {
                break;
            }
            number[i]=0;
            size = Math.max(i+1,size);
        }
        return toString();
    }

    public String toString() {
        StringBuilder r = new StringBuilder();
        for (int i = size; i>=0; i--) {
            r.append(ALPHA_NUMBER_CHARS[number[i]]);
        }
        return new String(r);
    }

    public static void main(String[] args) {
        AlphaNumber a = new AlphaNumber();
        for (int i = 0; i < 100; i++) {
            System.out.println(a.inc());
        }
    }
}
徐涵亮
2023-03-14

通常在创建ID时,最好不要增加ID。这使他们不安全。此视频包含一个很好的解释:https://www.youtube.com/watch?v=gocwRvLhDf8

Java有一个用于生成ID的内置UUID类。这是它的javadoc:https://docs.oracle.com/javase/7/docs/api/java/util/UUID.html

 类似资料:
  • 问题内容: 我需要编写一个SQL查询以在SQL中打印以下非字母序列 0001,0002,…,0009,000A,…,000Z,…,0010,0011,…,001A,…等等,直到…,ZZZZ 请注意:所有字符均大写。 提前致谢 问题答案: 您可以创建如下函数: 然后像这样使用它: 或者,不创建函数:

  • 问题内容: 如何生成(伪)随机字母数字字符串,例如:PHP中的“ d79jd8c”? 问题答案: 首先用所有可能的字符组成一个字符串: 您还可以使用range()更快地完成此操作。 然后,在一个循环中,选择一个随机数并将其用作字符串的索引以获取随机字符,然后将其附加到您的字符串中: 是随机字符串的长度。

  • 我试图在talend中找到一种方法来生成一个字母数字计数器,该计数器以以下方式创建数字:YYXXXXXXXX 哪里 null 我们一年中能容纳的最后一个id将是20zzzzzzzz 这怎么做?

  • 问题内容: 如何在Swift中生成随机的字母数字字符串? 问题答案: Swift 4.2更新 Swift 4.2在处理随机值和元素方面引入了重大改进。您可以在此处阅读有关这些改进的更多信息。这是减少到几行的方法: Swift 3.0更新 原始答案:

  • 本文向大家介绍C#程序生成随机小写字母,包括了C#程序生成随机小写字母的使用技巧和注意事项,需要的朋友参考一下 首先,设置Random class- 在方法下设置范围。这将显示一个介于0到26之间的字母。 这是完整的代码- 示例 输出结果

  • 本文向大家介绍php生成数字字母的验证码图片,包括了php生成数字字母的验证码图片的使用技巧和注意事项,需要的朋友参考一下 php生成数字字母的验证码图片 以上所述就是本文的全部内容了,希望大家能够喜欢。