日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java實現(xiàn)自動生成數(shù)據(jù)庫主鍵ID(java生成數(shù)據(jù)庫主鍵id)

在數(shù)據(jù)庫設(shè)計中,主鍵是被用來唯一標識一條記錄的一個或一組字段,是保證數(shù)據(jù)完整性的一個重要組成部分。而生成主鍵ID就是為了防止數(shù)據(jù)重復而設(shè)定一個唯一的標識符,并且它的格式一般都是整數(shù)或字符型。然而,在很多情況下,數(shù)據(jù)庫的主鍵ID需要手動輸入或手動生成,這對系統(tǒng)的開發(fā)和部署帶來了一定的麻煩。本文將介紹如何利用的方法,幫助開發(fā)者更輕松地完成這一步驟。

目前成都創(chuàng)新互聯(lián)已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站改版維護、企業(yè)網(wǎng)站設(shè)計、梓潼網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

方法一、使用UUID生成主鍵ID

方法一:使用UUID

UUID是一種通用唯一識別碼的縮寫,作為標準的制定者是微軟公司,但它在開源領(lǐng)域得到了廣泛應用。其優(yōu)點在于它可以生成一個唯一的ID,而且可以在一定程度上防止數(shù)據(jù)碰撞。因此,在Java中很多ORM框架和數(shù)據(jù)庫工具庫都有uuid的封裝,比如Hibernate、Mybatis等等。

Java代碼示例:

“` java

import java.util.UUID;

public class PrimaryKeyUtil {

public static String getUUID() {

UUID uuid = UUID.randomUUID();

String str = uuid.toString();

// 去掉”-“符號

return str.replaceAll(“-“, “”);

}

}

“`

方法二、使用SnowFlake生成主鍵ID

方法二:使用SnowFlake算法

SnowFlake算法是Twitter官方開源的分布式ID生成算法,其核心思想是將一個64位的整數(shù)分配給每個機器,然后再將這個64位的整數(shù)分成三個部分:41位作為時間戳,10位作為機器ID,12位作為序列號,這樣可以保證在同一機器上同時生成主鍵時不會沖突。SnowFlake算法的優(yōu)點在于其規(guī)律性和唯一性,在分布式場景下也有著很好的性能表現(xiàn)。

Java代碼示例:

“` java

public class PrimaryKeyUtil {

/**

* 起始的時間戳

*/

private final static long START_TIMESTAMP = 1480166465631L;

/**

* 每一部分占用的位數(shù)

*/

private final static long SEQUENCE_BIT = 12;

private final static long MACHINE_BIT = 5;

private final static long DATACENTER_BIT = 5;

/**

* 每一部分的更大值

*/

private final static long MAX_DATACENTER_NUM = ~(-1L

private final static long MAX_MACHINE_NUM = ~(-1L

private final static long MAX_SEQUENCE = ~(-1L

/**

* 每一部分向左的位移

*/

private final static long MACHINE_LEFT = SEQUENCE_BIT;

private final static long DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT;

private final static long TIMESTAMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT;

private static long datacenterId = 1L; // 數(shù)據(jù)中心

private static long machineId = 1L; // 機器標識

private static long sequence = 0L; // 序列號

private static long lastTimeStamp = -1L;// 上一次時間戳

/**

* 生成下一個ID

*

* @return String類型的ID

*/

public synchronized static String nextId() {

long currTimeStamp = getNewTimeStamp();

if (currTimeStamp

throw new RuntimeException(“Clock moved backwards. Refusing to generate id”);

}

if (currTimeStamp == lastTimeStamp) {

sequence = (sequence + 1) & MAX_SEQUENCE;

if (sequence == 0L) {

currTimeStamp = getNextTimeStamp();

}

} else {

sequence = 0L;

}

lastTimeStamp = currTimeStamp;

return (currTimeStamp – START_TIMESTAMP)

| datacenterId

| machineId

| sequence;

}

private static long getNextTimeStamp() {

long timeStamp = getNewTimeStamp();

while (timeStamp

timeStamp = getNewTimeStamp();

}

return timeStamp;

}

private static long getNewTimeStamp() {

return System.currentTimeMillis();

}

}

“`

在實現(xiàn)自動生成數(shù)據(jù)庫主鍵ID時,應根據(jù)需求進行選擇。使用UUID可以簡單實現(xiàn)自動生成主鍵ID,并且具有很高的唯一性,但是其序列號可能過于隨機,不適合需要排序的數(shù)據(jù),而使用SnowFlake算法生成主鍵ID則可以保證順序,并且具有良好的唯一性,適合多用戶、大數(shù)據(jù)量的高可用性場景。

相關(guān)問題拓展閱讀:

  • Java主鍵序列生成,需求如下.
  • java程序往mysql數(shù)據(jù)庫中插入數(shù)據(jù),主鍵ID是varchar型的,是數(shù)字

Java主鍵序列生成,需求如下.

思路:

序列生成方法入?yún)⒈仨氂猩霞壊藛涡蛄?、菜單級別陵鉛;如尺耐好果是一級菜單上級菜單序列為空

引入數(shù)據(jù)庫或者文件保存已生成的菜單,兩個方法,一個讀,一個寫,注意并發(fā)操作(加同步鎖)

每次調(diào)用序列生成方法時根據(jù)上級菜單序列創(chuàng)建其他菜單,,如果上級菜單序列為空時讀取文件取更大上級菜單序列再加1,否則直接遞增子菜單再寫入文畝肆件

需求都這么明確了,自己組主鍵唄

java程序往mysql數(shù)據(jù)庫中插入數(shù)據(jù),主鍵ID是varchar型的,是數(shù)字

因為你的eid是varchar類型的,所以在排序的時候 10是等于壹零 而不是十,所以就會出現(xiàn)1后面排序10的情況了,除非你在查詢的時候把eid轉(zhuǎn)成integer,然后再按照integer的排序,就可以實現(xiàn)順序排列了.

關(guān)于java生成數(shù)據(jù)庫主鍵id的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


網(wǎng)頁名稱:Java實現(xiàn)自動生成數(shù)據(jù)庫主鍵ID(java生成數(shù)據(jù)庫主鍵id)
本文鏈接:http://www.5511xx.com/article/cdijjio.html