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

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u014204541/article/details/88825896

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
  {}
}

猜你喜欢

转载自blog.csdn.net/u014204541/article/details/88825896