场景:在短时间大量导入数据,出现主键冲突报错,主键id是时间戳
解决方案:引用一个随机生成数的方法,每次调用时都随机生成id
id采用随机生成的方法,这样就算一次性大量数据导入也不会出现主键冲突的情况
String id = System.currentTimeMillis() + CommonUtils.generNumCode(6);
/**
*获取随机验证码
* @param len
* @return
*/
public static String generNumCode(int len){
//实例化 StringBuffer ,用作拼接验证码
StringBuffer code = new StringBuffer();
//拼接一个不为0的数字
code.append(getRandom());
//长度减1,随机拼接数字
for (int i = 0; i < len-1; i++) {
code.append(new Random().nextInt(10));
}
//利用递归算法,如果随机数长度不够则重新随机
if(code.length() != 6){
return generNumCode(6);
}else {
return code.toString();
}
}
/**
* 使用递归算法,获取第一个随机数不为0
* @return int
*/
public static int getRandom(){
int number = new Random().nextInt(10);
if(0 == number){
return getRandom();
}
return number;
}