现在开始好好写自己的代码。

生成订单号是很常用的一个功能,要求生成唯一不重复的值,作为订单唯一标识。方法有很多,有写是直接根据数据库自增ID作为订单号,也有使用GUID作为订单号的等等。。。
其实各有优点,具体根据自己的业务需求来定义了。而我这个主要是使用时间,生成年月日加自增数,每毫秒最多可以生成9999个订单,当然这个是可以配置的,根据现实业务情况进行定义。下面来看代码:

import java.text.SimpleDateFormat;
import java.util.Date;/*** 生成订单号类*/
public class GenerateNum {// 使用单例模式,不允许直接创建实例private GenerateNum() {}// 创建一个空实例对象,类需要用的时候才赋值private static GenerateNum g = null;// 单例模式--懒汉模式public static synchronized GenerateNum getInstance() {if (g == null) {g = new GenerateNum();}return g;}// 全局自增数private static int count = 0;// 每毫秒秒最多生成多少订单(最好是像9999这种准备进位的值)private static final int total = 9999;// 格式化的时间字符串private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");// 获取当前时间年月日时分秒毫秒字符串private static String getNowDateStr() {return sdf.format(new Date());}// 记录上一次的时间,用来判断是否需要递增全局数private static String now = null;/** 生成一个订单号*/public synchronized String GenerateOrder() {String datastr = getNowDateStr();if (datastr.equals(now)) {count++;// 自增} else {count = 1;now = datastr;}int countInteger = String.valueOf(total).length() - String.valueOf(count).length();// 算补位String bu = "";// 补字符串for (int i = 0; i < countInteger; i++) {bu += "0";}bu += String.valueOf(count);if (count >= total) {count = 0;}return datastr + bu;}
}

这里用了单例懒汉模式。调用的时候:

GenerateNum.getInstance().GenerateOrder();

测试输出如下:

201612081010145410001
201612081010145410002
201612081010145410003
201612081010145410004
201612081010145410005
201612081010145410006
201612081010145410007
201612081010145410008
201612081010145420001
201612081010145420002
201612081010145420003
201612081010145420004
201612081010145420005
201612081010145420006
201612081010145420007
201612081010145420008
201612081010145420009
201612081010145420010
201612081010145420011
201612081010145420012
201612081010145420013
201612081010145420014
201612081010145420015
201612081010145420016
201612081010145420017
201612081010145420018
201612081010145420019
201612081010145420020
201612081010145420021
201612081010145420022
201612081010145420023
201612081010145420024
201612081010145420025
201612081010145420026
201612081010145420027
201612081010145420028
201612081010145420029
201612081010145420030
201612081010145420031
201612081010145420032
201612081010145420033
201612081010145420034
201612081010145420035
201612081010145420036
201612081010145420037
201612081010145420038
201612081010145420039
201612081010145420040
201612081010145420041
201612081010145420042
201612081010145420043
201612081010145420044
201612081010145420045
201612081010145440001
201612081010145440002
201612081010145440003
201612081010145440004
201612081010145450001
201612081010145450002
201612081010145450003
201612081010145450004
201612081010145450005
201612081010145450006
201612081010145450007
201612081010145450008
201612081010145450009
201612081010145450010
201612081010145450011
201612081010145450012
201612081010145450013
201612081010145450014
201612081010145450015
201612081010145450016
201612081010145450017
201612081010145450018
201612081010145450019
201612081010145450020
201612081010145450021
201612081010145450022
201612081010145450023
201612081010145450024
201612081010145450025
201612081010145450026
201612081010145450027
201612081010145450028
201612081010145450029
201612081010145450030
201612081010145450031
201612081010145450032
201612081010145450033
201612081010145450034
201612081010145450035
201612081010145450036
201612081010145450037
201612081010145450038
201612081010145450039
201612081010145450040
201612081010145450041
201612081010145450042
201612081010145450043
201612081010145450044
201612081010145450045
201612081010145450046
201612081010145450047
201612081010145450048

Java 生成订单号相关推荐

  1. Java 生成订单号(唯一id)方案

    1.直接使用uuid public static String getUUID() {String replaceUUID = UUID.randomUUID().toString().replace ...

  2. Java 生成订单号或唯一id(高并发)方案

    1.直接使用uuid public static String getUUID() {String replaceUUID = UUID.randomUUID().toString().replace ...

  3. java随机生成订单号

    package com.aaa.utils;import org.springframework.stereotype.Component;/*** @项目名:ppp* @类名: DateUtil.j ...

  4. java 订单号 交易锁_(精)订单加锁及生成订单号

    今天看了黎活明老师的 实现订单加锁解锁(也包括生成订单号)功能 的视频,即多人操作(审核等)订单时的如何加锁. 对事务并发又温习了一下.涉及的东西无非是操作系统的多线程引起的并发,这里有个概念就是cp ...

  5. Java 有序生成订单号或流水号

    前言   最近用到了一些编号的生成规则记录一下,有序的生成订单号或者流水号 概述   第一种方式,适用于循环生成订单编号,例如有 100 条数据,需要循环生成相对应编号可以使用,下方的方法,仅限于特定 ...

  6. python生成订单号或生成任意序列

    python生成订单号或生成任意序列 示例代码: import time# 生成订单号 def get_order_code():# 年月日时分秒+time.time()的后7位order_no = ...

  7. php如何生成订单号,php如何生成不重复订单号

    php生成不重复订单号的方法:首先可以预先生成订单号:然后进行去重存起来:最后用的时候取一个出来用就行,代码为[$orderNo = date('YmdHis').substr(microtime() ...

  8. PHP制作订货,PHP生成订单号的两种方法

    在开发项目的时候经常有生成订单号的需求,这里列出两种生成20位订单号的常用方法. 方法一: 以下代码是14位当前时间加6位随机数,如果增减位数,只需修改末尾的数字6即可.<?php Functi ...

  9. php 快递单号生成规则,Thinkphp 生成订单号小案例

    Thinkphp 生成订单号小案例小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢思梦PHP就带领大家去解读一下生成订单号的问题!首先,订单号我们要明确它有有3个性质:1.唯一性 2. ...

  10. php订单号递增,PHP生成订单号的两种方法

    在开发项目的时候经常有生成订单号的需求,这里列出两种生成20位订单号的常用方法. 方法一: 以下代码是14位当前时间加6位随机数,如果增减位数,只需修改末尾的数字6即可.<?php functi ...

最新文章

  1. Vue 生命周期记录_学习笔记
  2. 平均获客成本_获客成本创新高,英语流利说(LAIX.US)获客难流利
  3. Python开发【第八篇】:网络编程 Socket
  4. Nginx 笔记与总结(15)nginx 实现反向代理 ( nginx + apache 动静分离)
  5. 在VS中建立一个易于管理的C++工程
  6. hdu 4289(最小割最大流定理)
  7. kotlin学习笔记——重载操作符
  8. nssl1305-最大值【dp,数学】
  9. python中的字符类型_八、 python中的数据类型——字符串
  10. c语言linux系统宏,Linux下C语言中的预定义宏
  11. 2022年 javaJDK下载安装步骤及环境变量配置【超详细】
  12. 微信公众号订阅号与微信服务号有什么不同
  13. 千呼万唤始出来-YYC松鼠聚合系统搭建教程,理论上可对接一切API
  14. PyQt5 第七章 综合篇(一)
  15. 如何使用百度天气预报API接口
  16. C#  图片背景变为透明
  17. 干货合辑!Ms08067安全实验室2022年度盘点
  18. C语言软件分层的方法,单片机程序分层设计思想
  19. 【数分书单】分析思维《一本小小的蓝色逻辑书》第四章小结
  20. http服务搭建,搭建web服务器

热门文章

  1. OneStep 移植
  2. git ssh-keygen
  3. 游戏俄罗斯方块(c语言)
  4. 桌面便签软件哪个比较好 好用的手机桌面便签软件推荐
  5. 刷题总结——宠物收养所(bzoj1208)
  6. C++ 常指针和指向常量的指针
  7. win10动态壁纸无法通过右击属性的个性化来换掉
  8. mysql的ndb引擎_NDB Cluster (分布式存储引擎)存储引擎简单简介及Mysql cluster的实现...
  9. 直播第三方美颜sdk是什么?
  10. 计算机毕业设计(附源码)python医院人事及科室病区管理