简述

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

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

随机数生成工具类

/*** MathUtils.java* com.prereadweb.utils* Copyright (c) 2019, 北京链天下科技有限公司版权所有.*/
package com.prereadweb.utils;/*** @Description: 随机数生成工具类* @author: Yangxf* @date: 2019/4/14 12:38*/
public class MathUtils {private static final String DEFAULT_DIGITS =                    "0";private static final String FIRST_DEFAULT_DIGITS =              "1";/*** @param target    目标数字* @param length    需要补充到的位数, 补充默认数字[0], 第一位默认补充[1]* @return          补充后的结果*/public static String makeUpNewData(String target, int length){return makeUpNewData(target, length, DEFAULT_DIGITS);}/*** @param target    目标数字* @param length    需要补充到的位数* @param add       需要补充的数字, 补充默认数字[0], 第一位默认补充[1]* @return          补充后的结果*/public static String makeUpNewData(String target, int length, String add){if(target.startsWith("-")) target.replace("-", "");if(target.length() >= length) return target.substring(0, length);StringBuffer sb = new StringBuffer(FIRST_DEFAULT_DIGITS);for (int i = 0; i < length - (1 + target.length()); i++) {sb.append(add);}return sb.append(target).toString();}/*** 生产一个随机的指定位数的字符串数字* @param length* @return*/public static String randomDigitNumber(int length){int start = Integer.parseInt(makeUpNewData("", length));//1000+8999=9999int end = Integer.parseInt(makeUpNewData("", length + 1)) - start;//9000return (int)(Math.random() * end) + start + "";}
}

生成ID工具类

/*** IdUtils.java* com.prereadweb.utils* Copyright (c) 2019, 北京链天下科技有限公司版权所有.*/
package com.prereadweb.utils;/*** @Description: 生成ID工具类* @author: Yangxf* @date: 2019/4/14 12:40*/
public class IdUtils {/*** 以毫微秒做基础计数, 返回唯一有序增长ID* <pre>System.nanoTime()</pre>* <pre>*  线程数量:   100*  执行次数:   1000*  平均耗时:   222 ms*  数组长度:   100000*  Map Size:   100000* </pre>* @return  ID长度32位*/public static String getPrimaryKey(){return MathUtils.makeUpNewData(Thread.currentThread().hashCode()+"", 3)+   MathUtils.randomDigitNumber(7);                                          //随机7位数}
}

效果

随机生成10位数的字符串ID相关推荐

  1. 随机生成10位数QQ号.c

    // 随机生成十位数的QQ号,首位数只能为1,2,3#include <stdio.h> #include <stdlib.h> #include <time.h> ...

  2. 随机生成10个8位数的密码

    题目要求: 随机密码生成.编写程序,在26个字母大小写和9个数字组成的列表中随机生成10个8为的密码. import randomdef random_password():#定义一个空列表list1 ...

  3. php随机生成三位数,php随机生成数字加字母 PHP随机生成数字+调用,

    for ($i = 1; $i PHP生成10位左右,数字.字母混合的字符串且唯一 需要生成一个唯一的字符串要CSS布局HTML小编今天和大家分享大写字母和数字混合,10位为佳,并且不能重复 给你说个 ...

  4. java随机生成10个不重复的数字,随机生成10个不重复的0-100的数字(实例讲解)

    在面试时,面试官问了我一道js题:随机生成一个含有10个元素的数组,且元素为0-100的不重复的整数.当时的第一反应是for循环生成10个数字,但是可能会有重复的情况:进一步思考,需要对生成的数字进行 ...

  5. 随机生成邀请码、随机生成10位数字、随机生成英文字母+数字

    /*** 随机字符串生成* @param int $length 生成字符串长度* @param array $str_content ['number','capital_chars','lower ...

  6. 随机密码生成。编写程序,接收列表在26个字母大小写和10个数字组成的列表中随机生成10个8位密码。

    随机密码生成.编写程序,接收列表在26个字母大小写和10个数字组成的列表中随机生成10个8位密码. 这里我们要用到random函数. 代码如下: import random for i in rang ...

  7. 随机生成6位数、随机生成不重复的6位数

    随机生成一个几位数,这种比较常见的操作今天我们来看一下,例如随机生成6位数,直接来简单明了的吧: int num = (int) ((Math.random() * 9 + 1) * 100000); ...

  8. Java 随机生成四位数验证码的方法

    //生成验证码public static String codeFen(){String str = "0123456789";//将字符串转换为一个新的字符数组.char[] V ...

  9. python 随机生成不重复的6位数_随机生成6位数、随机生成不重复的6位数

    随机生成一个几位数,这种比较常见的操作今天我们来看一下,例如随机生成6位数,直接来简单明了的吧: int num = (int) ((Math.random() * 9 + 1) * 100000); ...

最新文章

  1. xp与Linux双系统共存
  2. python写出的程序如何给别人使用-如何用PYTHON代码写出音乐
  3. 三种流行的数据库查询表记录数【转】
  4. for+next()实现数组的遍历及while list each 的使用
  5. java----单例模式
  6. 计算机组成原理写一个运算器,计算机组成原理运算器的实现实验报告.doc
  7. 用户自增长机制(一图胜千言)
  8. [NOI2014] 动物园
  9. 解决移动端 footer fixd 定位被键盘顶起来的方案
  10. [记录]Python的master-worker和epoll模式
  11. SOME/IP不等同于SOA,CommonAPI-RPC通信和vsomeip基于消息通信
  12. ASP.NET 2.0下实现匿名用户向注册用户的迁移(上) zhuan
  13. vlfeat工具包的MATLAB安装
  14. 软件登录账号信息 删除
  15. 【JSTL】choose标签
  16. 【ImgtuUtil】路过图床基础 Java 工具类(支持登录、上传、删除图片等操作)
  17. 如何阅读一本专业书?
  18. 两种构造最小生成树的算法(普里姆算法,克鲁斯卡尔算法)
  19. Text to face:寻找黛玉-从语言描述到人脸图像生成
  20. php获取当前日期所在自然周周一周末以及前后自然周始末

热门文章

  1. 求用C#开发的文件传输实例
  2. ORACLE统计计算
  3. K近邻算法和KD树详细介绍及其原理详解
  4. oracle上移下移置顶,[置顶]       阅读Oracle官方文档指南
  5. vue引入/使用阿里矢量图库
  6. 老男孩python作业_老男孩python学习第一天作业
  7. Python-Django毕业设计微信签到小程序(程序+Lw)
  8. C# DataGridView单元格合并与文字居中
  9. 2021世界人工智能大会AI Debate:图神经网络是否是实现认知智能的关键?
  10. 学会这9个伪类,让你的页面/表单更人性化