java随机生成10位数的字符串ID

  

<强>简述

  

项目中,有种业务需要当前表中存个另外一个表中的主键标识字段,如果用数据库自增的话,容易出现重复

  ID

比如一个表的主键自增1,2,3 ..... B表主键ID自增1,2,3 .....,一个表中有个字段是B_Id,会出现a_id=3, B_Id=3的情况,傻傻分不清楚这边主要分享的是一个随机生成10位永不重复的随机字符串,不啰嗦了,下面上代码

  

<强>随机数生成工具类

     /* *   * MathUtils.java   * com.prereadweb.utils   * 2019年版权(c),北京链天下科技有限公司版权所有。   */包com.prereadweb.utils;/* *   * @Description:随机数生成工具类   * @author: Yangxf   * @date: 2019/4/14 38   */公开课MathUtils {      私有静态最终字符串DEFAULT_DIGITS=" 0 ";   私有静态最终字符串FIRST_DEFAULT_DIGITS=?”;/* *   * @param目标目标数字   * @param长度需要补充到的位数,补充默认数字[0],第一位默认补充[1]   * @return补充后的结果   */公共静态字符串makeUpNewData(目标字符串,整数长度){   返回makeUpNewData(目标、长度、DEFAULT_DIGITS);   }/* *   * @param目标目标数字   * @param长度需要补充到的位数   * @param添加需要补充的数字,补充默认数字[0],第一位默认补充[1]   * @return补充后的结果   */公共静态字符串makeUpNewData(目标字符串、整数长度字符串添加){   如果(target.startsWith(“-”)的目标。替换(“-”,“”);   如果(target.length()在=长度)返回目标。substring(0,长度);   StringBuffer某人=new StringBuffer (FIRST_DEFAULT_DIGITS);   for (int i=0;我& lt;长度- (1 + target.length ());我+ +){   sb.append(添加);   }   返回sb.append(目标).toString ();   }/* *   *生产一个随机的指定位数的字符串数字   * @param长度   * @return   */公共静态字符串randomDigitNumber (int长度){   int开始=整数。长度方法(makeUpNewData (" "));//1000 + 8999=9999   int结束=整数。方法(makeUpNewData(",长度+ 1))——开始;//9000   返回(int) (math . random() *) + +”开始;   }   }      

生成ID工具类

     /* *   * IdUtils.java   * com.prereadweb.utils   * 2019年版权(c),北京链天下科技有限公司版权所有。   */包com.prereadweb.utils;/* *   * @Description:生成ID工具类   * @author: Yangxf   * @date: 2019/4/14 40分   */公开课IdUtils {/* *   *以毫微秒做基础计数,返回唯一有序增长ID   * & lt; pre> system . nanotime () & lt;/pre>   * & lt; pre>   *线程数量:100   *执行次数:1000   *平均耗时:222 ms   *数组长度:100000   *地图大小:100000   * & lt;/pre>   * @return ID长度32位   */公共静态字符串getPrimaryKey () {   .hashCode返回MathUtils.makeUpNewData (Thread.currentThread () () + ", 3) + MathUtils.randomDigitNumber (7);//随机7位数   }   }      

效果   

癹ava随机生成10位数的字符串ID

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

java随机生成10位数的字符串ID