欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-12 16:34:40
本文实例为大家分享了java数据库唯一id生成工具类的具体代码,供大家参考,具体内容如下 import java.io.file; import java.te...

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

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

上一篇:

下一篇: