public String addOne(String testStr){ //传入给定的流水号每次加一
String[] strs = testStr.split( "[^0-9]" ); //根据不是数字的字符拆分字符串
String numStr = strs[strs.length- 1 ]; //取出最后一组数字
if (numStr != null && numStr.length()> 0 ){ //如果最后一组没有数字(也就是不以数字结尾),抛NumberFormatException异常
int n = numStr.length(); //取出字符串的长度
int num = Integer.parseInt(numStr)+ 1 ; //将该数字加一
String added = String.valueOf(num);
n = Math.min(n, added.length());
//拼接字符串
return testStr.subSequence( 0 , testStr.length()-n)+added;
} else {
return null;
}
}
若传参值在每次都是数据库中获取,并且在同一时间有多次生成会会出现流水号重复现象,解决方案分布式锁常见的几种分布式锁_岁月流逝-CSDN博客_分布式锁
mysql 动态idset @folder_id= FLOOR((UNIX_TIMESTAMP(CURRENT_TIMESTAMP(1))*1000000000)+(UUID_SHORT()%100000000));
还有其他解决方案,欢迎大家指导