比如
后端获取系统日期时间:20210331080808
通过代码变成 ZZ+20210331080808+001
输入结果是 ZZ202010331080808001
需要进数据库进行判断是否有这条数据,有的话在原有的基础+1,判断不存在的话 就用ZZ202103310808001
写一个存储过程判断吧 每次拿最大的序列号 再加1,。或者自己查数据库 把最大的拿出来加1
看楼主应该是想要获取一个类似唯一字符串主键的需求,其实这个有更方便的,不一定要用时间,因为请求频率变高的时候,在一个时间点,很容易来多笔请求,可以用类似 uuid 的方式生成单机环境唯一,在通过 拼接 机器ip 生成集群唯一。按照你的需求我写段伪代码吧,仅作参考,实际应该是不适用的。
public class Test { public static void main(String[] args) { Test t = new Test(); System.out.println(t.createUniqueNo()); } public String createUniqueNo(){ String pre = "ZZ"; long time = new Date().getTime(); int num = 1; boolean dbExist = true; String uniqueNo = ""; while(dbExist){ uniqueNo = pre + time+ num; dbExist = checkDBExist(uniqueNo); num ++ ; } return uniqueNo; } private boolean checkDBExist(String uniqueNo){ //TODO 检查数据是否存在: true 存在; false 不存在 return true; } }
思路:
1、生成对应编号
2、生成的编号去数据库查询,使用count()函数来统计,count()函数返回的是int
3、返回值+1
4、最后使用String来拼接返回值