<强>简述强>
项目中,有种业务需要当前表中存个另外一个表中的主键标识字段,如果用数据库自增的话,容易出现重复
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位数 } }
效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。