java数据库唯一id生成工具类
作者:Tlimited 发布时间:2023-04-04 22:53:34
标签:java,数据库,id
本文实例为大家分享了java数据库唯一id生成工具类的具体代码,供大家参考,具体内容如下
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
public class UniqueIdUtil
{
private static long adjust = 1L;
private static long nextId = 0L;
private static long lastId = -1L;
private static long randomLeng = 6L;
private static JdbcTemplate jdbcTemplate;
private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
private static void init()
{
try
{
jdbcTemplate = (JdbcTemplate)AppUtil.getBean("jdbcTemplateSN");
String str2 = AppConfigUtil.get("genId.adjust");
if (str2 != null) {
adjust = Integer.parseInt(str2);
}
}
catch (Exception localException)
{
adjust = 1L;
String str3 = AppConfigUtil.get("genId.adjust");
if (str3 != null) {
adjust = Integer.parseInt(str3);
}
}
}
private static void getNextIdBlock()
{
if (jdbcTemplate == null) {
init();
}
Long localLong = Long.valueOf(-1L);
Integer localInteger = Integer.valueOf(-1);
String str1 = "SELECT bound,incremental FROM SYS_DB_ID T WHERE T.ID=?";
String str2 = "UPDATE SYS_DB_ID SET BOUND=? WHERE ID=?";
try
{
Map localMap = jdbcTemplate.queryForMap(str1, new Object[] { Long.valueOf(adjust) });
localLong = Long.valueOf(Long.parseLong(localMap.get("bound").toString()));
localInteger = Integer.valueOf(Integer.parseInt(localMap.get("incremental").toString()));
nextId = localLong.longValue();
lastId = localLong.longValue() + localInteger.intValue();
jdbcTemplate.update(str2, new Object[] { Long.valueOf(lastId), Long.valueOf(adjust) });
}
catch (EmptyResultDataAccessException localEmptyResultDataAccessException)
{
insertNewComputer();
}
}
private static void insertNewComputer()
{
try
{
lastId = 10000L;
String str = "INSERT INTO SYS_DB_ID (id,incremental,bound) VALUES(" + adjust + ",10000," + lastId + ")";
jdbcTemplate.update(str);
}
catch (Exception localException)
{
localException.printStackTrace();
}
}
public static synchronized long genId()
{
if (lastId <= nextId) {
getNextIdBlock();
}
long l = nextId++;
return l + adjust * 10000000000000L;
}
public static final String getGuid()
{
UUID localUUID = UUID.randomUUID();
return localUUID.toString();
}
public static final String getRandom()
{
Random localRandom = new Random();
String str1 = "";
for (int i = 0; i < randomLeng; i++)
{
String str2 = String.valueOf(localRandom.nextInt(10));
str1 = str1 + str2;
}
return str1;
}
public static String genOrderNo()
{
long l = genId();
String str = dateFormat.format(new Date());
return str + l;
}
public static void main(String[] paramArrayOfString)
throws Exception
{}
}
来源:https://blog.csdn.net/u014204541/article/details/88825896


猜你喜欢
- 首先 函数指针是指向一组同类型的函数的指针;而类成员函数我们也可以相似的认为,它是指向同类中同一组类型的成员函数的指针,当然这里的成员函数更
- JAVA用于开发图形界面应用的 SWING 组件包功能强大,使用方便。接下来我们就使用其写一个简单的图形界面小程序:加法计算器。第一步:首先
- 思路今天带大家实现一个上拉加载更多的ListView.GitHub传送门:PulmListView, 欢迎大家fork&&s
- 本文实例讲述了Android编程学习之抽象类AbsListView用法。分享给大家供大家参考,具体如下:一、继承关系public abstr
- 理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣。Proxy是比较有用途的一种模式
- 有些人可能对线程池比较陌生,并且更不熟悉线程池的工作原理。所以他们在使用线程的时候,多数情况下都是new Thread来实现多线程。但是,往
- 新项目Android和ios要做成统一样式,年龄,性别,时间,要做成滚轮效果,Android没有原生控件,只能自己定义,于是我较劲脑汁,终于
- 本文实例为大家分享了Unity实现俄罗斯方块第一部分,供大家参考,具体内容如下准备工作1、新建一个2D项目,新建成功以后设置相机的一些参数2
- kafka是什么?Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式
- 一、直接执行SQL查询:1、mappers文件节选<resultMap id="AcModelResultMap"
- 详解 Java Maximum redirects (100) exceeded这些是可以用于定制默认HttpClient实现行为的参数:&
- 本文实例讲述了C# linq查询之动态OrderBy用法。分享给大家供大家参考。具体分析如下:groupList是原始数据集合,List&l
- MS的CMD命令行是一种重要的操作界面,一些在C#中不那么方便完成的功能,在CMD中几个简单的命令或许就可以轻松搞定,如果能在C#中能完成C
- java集合的工具类Collections中提供了两种排序的方法,分别是:Collections.sort(List list)Collec
- 问题:写了一个新的dao接口,进行单元测试时提示:Initialization of bean failed; nested excepti
- Java是一种强类型, 许多流行的编程语言都已经支持局部变量类型推断,如js,Python,C++等JDK10 可以使用var作为局部变量类
- 1、0前言最近在学习 Go 语言,Go 语言中有指针对象,一个指针变量指向了一个值的内存地址。学习过 C 语言的猿友应该都知道指针的概念。G
- Java中字符串中子串的查找共有四种方法(indexof()) indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始
- 目录Directory:创建文件夹删除文件夹获取文件夹下的子文件夹获取同类型的文件判断文件夹是否存在移动文件夹总结之前发过File对文件的操
- NavMesh(导航网格)是3D游戏世界中用于动态物体实现自动寻路的技术。NavMesh系统是人工智能的一种,它使用一个添加在游戏对象上或者