如果是自增字段,從一開始就不能手動寫代碼set值,只能使用自增。如果你手動set一個1,而字段沒自增過,那么下次字段就會自增為1,這樣兩個值就沖突了。解決辦法是將表重新構(gòu)建一下,或?qū)⒆栽龀跏贾翟O(shè)為0,讓他從頭開始自增,而程序中凡是認(rèn)為set值的地方都去掉,在sql語句中不要insert這個字段
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的祿豐網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
java項(xiàng)目實(shí)現(xiàn)流水號自動增長
項(xiàng)目中有一個規(guī)則編號字段,從1開始,編號長度為5位,那么第一條數(shù)據(jù)編號就是00001。
實(shí)現(xiàn)的基本思路就是項(xiàng)目啟動時,從數(shù)據(jù)庫獲取當(dāng)前最大值,作為靜態(tài)變量存儲;
業(yè)務(wù)獲取新的編碼,考慮并發(fā)問題,獲取編碼方法(編碼自增部分)為synchronized同步方法,如果自增為原子操作,則無需同步;
編碼前置0,使用String.format("%05d", newNum);格式化獲取。
實(shí)現(xiàn)代碼如下:
private final static AtomicInteger atomic = new AtomicInteger(0);
public static String startFormat(String format) {
return String.format(format, atomic.incrementAndGet());
}
你說的插一條記錄,這個一條記錄放哪了?是數(shù)據(jù)庫嗎?你說的ID是放在數(shù)據(jù)庫里嗎?如果不是,放在一個類里,初值設(shè)為100000,當(dāng)對數(shù)據(jù)庫經(jīng)行一次插入的操作,就把這個值+1。當(dāng)然你可以把這個ID放在session中然后取出來。有點(diǎn)迷糊你問得。
在java里這個語句是沒有異議的,早期的C確實(shí)很多不同的編譯優(yōu)先級不一樣會有異議。
這個一般會用在迭代里面,a作為循環(huán)自變量賦值給b后再自增,這樣子在循環(huán)里面就不需要再加一個a自增的語句了使代碼更加簡潔,但是不一定明了,因?yàn)槊刃乱话憧床欢?,還要翻書去找優(yōu)先級……
像類似的,也有用 arr[a++]=xxx; 之類的循環(huán)來遍歷數(shù)組。