时间:2021-05-19
本文实例为大家分享了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 {}}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、主键id的生成数据库表里通常都会有一个主键id,来作为这条数据的唯一标识。常见的方式1.数据库自动增长这种很常见了,可以做到全库唯一。因为id是天然排序的,
有时我们不依赖于数据库中自动递增的字段产生唯一ID,比如多表同一字段需要统一一个唯一ID,这时就需要用程序来生成一个唯一的全局ID。UUID从Java5开始,U
系统唯一ID生成分案有很多种,例如:数据库auto_increment,UUID,Redis生成ID(Redis原子操作INCR和INCRBY),Twiitte
php无限分类大致有三种方式, 1、数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类; 2、数据库设计通过特定格式进行排列,然后使用
Java使用Sqllite数据库如何生成db文件本文主要介绍Java使用Sqllite数据库如何生成db文件的实现实例,网上资料不是很多,自己上网搜资料看到的一