java提交订单时如何生成18位流水号

求一个思路,不用uuid。还有其他方法吗,生成订单的不重复的流水号

12个回答

201709180000000101
日期+userid+顺序号

insert into t_trading(trading_code) values(CONCAT('DD',DATE_FORMAT(now(),'%Y%m%d'),LPAD(LAST_INSERT_ID()+1,20,'0')))

唯一不会重复的就是时间,那么我觉得我们就要把算法中增加当前时间

taoleialskdjfhg
ZealotTL 回复J2EE_鹫: 并发
接近 3 年之前 回复

可以参考数据库的UUID的取法,如果有并发时间一样会重复

数据库建一个SEQ,每次去得到这个序列号,然后用bigdecimal转成18位

订单号常见的几种方式:
1.利用数据库主键值产生一个自增长的订单号(订单号即数据表的主键)
2.日期+自增长数字的订单号(比如:2012040110235662)
3.产生随机的订单号(65865325365966)
4.字母+数字字符串式,字母有包含特别意义,C02356652

一般流水号,都是有一定要求的,如可代表时间,可描述先后顺序,因此最佳解决方案是:时间+序列;
这里时间好解决,就是simpledateformat 的使用。问题就在序列这块,需要使用到数据库,或者说是写硬盘,其中写硬盘效率低且难维护。因此建议还是数据库序列吧。

登录的主机ip地址+当前时间+每天的顺序号

软件包 java.util.concurrent.atomic下提供了相关的类,可以用来生成顺序号

参考如下代码的 编程思路 自己改改 就出来了,要开启事务,避免生成重复值

  /**
     * 获取固定长度自增值  每次获取 自动加1
     * @param var   一维key
     * @param var2  二维key 默认0
     * @param length 自增值长度
     * @return
     */
    public static int getIncrementValue(String var, String var2, int length) {
        var2 = var2 == null ? "0" : var2;
        TransactionDao db = new TransactionDao(DbCode.ROOGO);
        Integer val = null;
        try {
            db.update(" UPDATE `tab_sysconfig` SET `value` = (value + 1)  WHERE var = ? and var2 = ? ", var, var2);
            String v = db.getUnique("SELECT `value` FROM tab_sysconfig WHERE var = ? and var2 = ? ", var, var2);
            if (v != null && v.length() == length)
                val = Integer.valueOf(v);
        } finally {
            try {
                db.commit();
            } finally {
                db.close();
            }
        }
        if (val == null) {
            val = new Double(Math.pow(10, length - 1)).intValue() + 1;
            setValue(var, var2, String.valueOf(val));
        }
        return val.intValue();
    }
共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

java 六位日期+四位流水号(如: 1604210001)

java中如何生成这样的流水号,要考虑集群,并发和唯一。一般来说应该是在java后台做吧,如果实在不行,数据库中生成可以的话,请也回答下,数据库也考虑集群

生成流水单号是在java代码中生成好还是直接从数据库中生成?

之前项目中用的oracle数据库,用sequence生成流水号。现在用mysql,没有 sequence,那么,如果生成流水号的话,是自己建表写函数直接生成流水号好。还是在后台写个java方法用synchronize锁上生成流水号好?

Java流水号生成问题 求大神教我!!!!

项目由jsp写逻辑,html画页面,现在项目新增要做流水号,格式要求日期班级00000,例如16(2016年)02(2班)00001(申请的第一条数据,以此类推自增长)!!求大神了!!数据库中字段还没设

请问怎样能够生成一个自增的流水号

一个数据中有2张单表,其中一张表有4个字段:id,String,date,code,怎样能够 将这张表中后3张个字段取出来然后拼接起来形成另一张表的一个字段显示在JSP页面 上面,就是input的value,而且是限定位数不足补0的,而且这个code是个数字,取出来要求能够转换成int类型并且进行自增,然后再存入数据库中代替原来的code字段,然后到了下个月就会新增一条数据,code从0开始,时间是精确到月,String固定不用变动,自增规则是每打开这个页面就会自增一次,页面上input的value也是自动生成的,需求也就是4个 1:将字段取出并且拼接; 2:不足的位数补0; 3:将凑得自增1并且代替原来字段 4:每月新增一条数据并且重置

支付宝唯一订单号如何生成

支付宝唯一订单号如何生成?

制作一个流水号WJ201700001在jsp文本框中实现,后面5位数如00001-00002递增,

制作一个流水号WJ201700001 制作一个例子更好,求大师帮忙

java用户注册时后台随机生成不重复的10位数

我想做一个识别用户的ID号。java后台自动生产8-10的随机数,且首位不能够唯0。8-10也不可全为0。代码如何实现

java 根据字符串生成二维码

使用的是jfinal框架,用到maven。现在要根据字符串生成二维码,并且显示到jsp页面。

Java如何生成20位ID,不允许重复

Java如何生成20位ID,不可以重复。。。。谁有办法?最好有代码,或者提供完整思路也行 uuid都是32或者16。。。妈的20位咋办?

根据一批商品自动生成一批订单,求java程序实现或编程思路,谢谢

有一批不同种类的商品,每种商品都有多个数量,而且也有价格,现在需要将这批商品自动生成一批订单,订单生成的规则是每张订单要包含两种商品,且订单总价格在500元以内的占生成一批订单的总订单数量的90%,另外10%的订单总价格要在500至600元以内。请问用java程序怎么实现呢?求java程序实现或编程思路

JAVA电商订单处理问题

在电商网站中,高并发多线程下,后台是如何去处理订单的,可否有经验或者知道的朋友给说一下,纯技术白

Java 如何生成一定规则的编码

如: 我要生成b001这种, 前面一个是字母 后面3位是编号编号是逐渐增加的

用java如何高效的生成图片

有个新需求,要用java根据用户的输入生成个性图片,类似黑凤梨那样的。那么问题来了,如何高效的生成图片呢?求大神指点

实现一个自动生成的订单ID

我在做一个POS机收费系统,然后打算写一个java类生成订单ID,因为ID不能重复,所以我打算是按"日期+流水号"的格式。 在生成一张订单的订单号的时候,需要获取数据库上一订单的ID 然后+1来实现。 想求问一下大神们,如何才能获取上一订单的ID号呢?

java中编号自动生成问题。。

![图片说明](https://img-ask.csdn.net/upload/201902/22/1550829507_559563.png)停车场里面停车位编号自动生成

怎样用java调用微信接口生成二维码,并将图片存图硬盘中,求那位大神可以伸出援手,万分感激。

怎样用java调用微信接口生成二维码,并将图片存图硬盘中,求那位大神可以伸出援手,万分感激。

关于java利用PDF模板生成PDF,条形码问题

本人小白,问题描述上不是很清楚的还请各路大神海涵。 在用java直接生成PDF的功能上本人其实已经解决了。。奈何公司现在有多种面单,, 所以需要利用PDF模板去生成PDF文件。 网上查了很多资料。,模板生成后数据的填充都能解决。。 但是面单上是有条形码的,本人在模板上定义了一个条形码域,但是向内填充时, 就尴尬了。只是显示对应的数据内容。并没有想象中的条形码。该如何解决这个问题呢? 求大神。 本人是利用itext,模板是用Adobe Acrobat DC编辑的。

不同类型的成果,需要对他们进行唯一的编号,也就是前缀是规定的,需要自动生成后面的流水号。

怎么样做一个编号自动生成的程序啊?比如说有个编号为XM_01,下一个编号就为XM_02,然后前面的不变 后面的一直递增,递增到99时就变成XM_A01 ``` public string GenAcID(string type) { int i = 1; string s = type + "_"; do { s = s + i.ToString(); i++; } while (i < 0); return s; } ``` 上面这段代码生成的编号是这样自增的,XM_0,下一个是XM_0_1,再下一个是XM_0_1_2,这样会太长,怎么做到在数字原有的基础上自增啊?求各位大神赐教!

java随机数生成(求一个java安全随机数生成的方法)

网上找到几种随机数生成的方法但是不知道那种比较安全 1.SecureRandom 2.double pross = (1 + rm.nextDouble()) * Math.pow(10, strLength); 第一种 实现网上的有点看不懂 萌新就问 =|=

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c#树形选择 c#中类图的使用方法 c# 传参 调用exe c# 怎么定义方法 c# 修改本地时间 c#前台怎么读取资源文件 c# xml转list c#实现框选截图 m*m乘法表c# c# 乘法99表
立即提问