`

nextID 带时间戳 和序号 的主键

    博客分类:
  • java
阅读更多
	// 初始化
	static AtomicInteger mySeq;

	/**
	 * 返回 【前缀】 + 【9位时间长整型的36进制数,左补0】 + "-" + 5位序列号
	 * 
	 * @param prefix
	 * @return
	 */
	public static String nextID(String prefix) {
		if (mySeq == null) {
			// 首次运行时的初始化
			String timeSeq = new SimpleDateFormat("HHmmss", Locale.getDefault()).format(new Date()).substring(1);
			mySeq = new AtomicInteger(Integer.parseInt(timeSeq));
		}

		// id前缀大写,补满2位
		if (prefix == null) {
			prefix = "??";
		}
		prefix = prefix.toUpperCase() + "__";
		prefix = prefix.substring(0, 2);

		// 9位时间长整型的36进制数,左补0
		String ts = lpadZero(Long.toString(System.currentTimeMillis(), Character.MAX_RADIX), 9);
		String id = prefix + ts + "-" + mySeq.getAndIncrement();
		return id;
	}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics