软件编程
位置:首页>> 软件编程>> java编程>> java数据库唯一id生成工具类

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com