java自动生成订单编号问题?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java自动生成订单编号问题?相关的知识,希望对你有一定的参考价值。
public class Main
private static long n = 1;
public static void main(String[] args)
System.out.println(test(n));
System.out.println(test(n));
public static long test(long l)
String str = new SimpleDateFormat("yyyyMM")
.format(new java.util.Date());
long m = Long.parseLong((str)) * 10000;
long ret = m + l;
n = l + 1;
return ret;
这段代码可以生成:2010010001格式的
我想生成DD2010010002这种格式。
DD是固定的,表示订单的意思,楼下说的方法貌似不行。return 返回的是Long型。
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test
public static final String PREFIX = "DD";
private static long code;
public static void main(String[] args)
System.out.println(Test.nextCode());
System.out.println(Test.nextCode());
System.out.println(Test.nextCode());
public static synchronized String nextCode()
code++;
String str = new SimpleDateFormat("yyyyMM").format(new Date());
long m = Long.parseLong((str)) * 10000;
m += code;
return PREFIX + m;
参考技术A 如果前面是“DD”是固定的
return "DD"+ret;
如果是随机生成,可以加个随机函数,随机生成连接ret 参考技术B 在调用test方法的地方加上dd就行了。
比如 String str="DD"+test(); 参考技术C public class Main
private static long n = 1;
public static void main(String[] args)
System.out.println(test(n));
System.out.println(test(n));
public static String test(long l)
String str = new SimpleDateFormat("yyyyMM")
.format(new java.util.Date());
long m = Long.parseLong((str)) * 10000;
long ret = m + l;
n = l + 1;
return "DD"+ret;
mysql生成订单编号函数
DROP TABLE IF EXISTS `order_seq`;
CREATE TABLE `order_seq` (
`timestr` int(11) NOT NULL,
`order_sn` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP FUNCTION order_seq;
create function order_seq()
returns integer
begin
declare v_cnt integer;
declare v_timestr integer;
declare v_value integer ;
declare rowcount BIGINT;
set v_timestr =DATE_FORMAT(now(),‘%Y%m%d‘);
select ROUND(RAND()*100,0) + 1 INTO v_cnt;
UPDATE order_seq set order_sn = order_sn + v_cnt where timestr = v_timestr;
if ROW_COUNT() = 0 THEN
INSERT INTO oder_seq values(v_timestr,v_cnt);
end if;
select CONCAT(v_timestr,LPAD(order_sn,7,0)) INTO v_value from order_seq where timestr = v_timestr;
return v_value;
end;
--运行结果
SELECT order_seq();
以上是关于java自动生成订单编号问题?的主要内容,如果未能解决你的问题,请参考以下文章