java数据库唯一id生成工具类

所属分类: 软件编程 / java 阅读数: 45
收藏 0 赞 0 分享

本文实例为大家分享了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
 {}
}

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

更多精彩内容其他人还在看

java实现背单词程序

这篇文章主要为大家详细介绍了java实现背单词程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java实现单词查询小程序

这篇文章主要为大家详细介绍了java实现单词查询小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java程序开发环境配置图文教程

这篇文章主要为大家详细介绍了Java程序开发环境配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解ssh框架原理及流程

在本文中小编给大家整理的是关于ssh框架原理及流程的相关知识点内容,有此需要的朋友们可以学习下。
收藏 0 赞 0 分享

Java实现弹窗效果的基本操作

这篇文章主要为大家详细介绍了Java实现弹窗效果的基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解springmvc常用5种注解

在本篇里我们给大家总结了关于springmvc常用5种注解相关知识点以及实例代码,需要的朋友们参考下。
收藏 0 赞 0 分享

Java实现弹窗效果的基本操作(2)

这篇文章主要为大家详细介绍了Java实现弹窗效果的基本操作第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Spring Boot假死诊断实战记录

这篇文章主要给大家介绍了关于Spring Boot假死诊断的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java计时新姿势StopWatch详解

这篇文章主要介绍了Java计时新姿势StopWatch,最近公司来了个大佬,从他那里学到不少东西,其中一个就是计时的新姿势「StopWatch」,需要的朋友可以参考下
收藏 0 赞 0 分享

java实现点击按钮弹出新窗体功能

这篇文章主要为大家详细介绍了java实现点击按钮弹出新窗体功能,旧窗体不进行操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多