概述利用db生成業務主鍵,生成業務主鍵的方法各種各樣,其中一種是利用
db
表主鍵自增的方式來生成唯一性的業務主鍵,下文簡單介紹一下。
**以
mysql
作為例子,操作db
的資料層是mybatis
。
create table `key_gen` (
`business_no` bigint(20) unsigned not null auto_increment comment '自增主鍵',
`create_time` timestamp not null comment '建立時間',
primary key (`business_no`)
) engine=innodb auto_increment=100 default charset=utf8;
可以通過建立一張key_gen
的表,再利用mybatis的usegeneratedkey
特性,當insert
一條記錄的時候,返回自增的id
。
insert into key_gen (
`create_time`
)values (
now()
)
模型物件:
package test.demo;
public class keygen
public long getno()
}
@repository
public inte***ce keygenrepository
呼叫**:
@service
public class keygen
}
這樣當呼叫keygenrepository
的genarateno
方法的時候,就可以拿到乙個唯一的id了。
如果你需要基於某個數字上自增,那麼可以利用mysql
的auto_increment
的特性,如本文的例子,第一次插入資料的時候,會直接返回100這個id
。
關於業務主鍵和邏輯主鍵
關於這個問題網上已經有很多的討論,現在綜合這些討論在加上自己眾多建模及資料倉儲工作中的經驗給出以下分析及取捨建議,供各位同行參考 一 業務的東西,是每乙個做軟體的最薄弱的,並且是最有可能受到客戶影響的,也是最會引起問題的。比如身份證,如果有系統的錶用此做主鍵,其他眾多表以此為外來鍵,當身份證從15位...
什麼是邏輯主鍵和業務主鍵
定義 邏輯主鍵 surrogate key 無意義的字段,即自增長字段,即identity。這其中還有乙個選擇guid globally unique identifier 也叫 主鍵。業務主鍵 natrual key 有意義的字段,比如身份證 id。也叫自然主鍵 維基百科介紹 在關聯式資料庫設計中...
主鍵生成策略
一共是13種,其中包括native native 對於 oracle 採用 sequence 方式,對於mysql 和 sql server 採用identity 自增主鍵生成機制 native就是將主鍵的生成工作交由資料庫完成,hibernate不管 很常用 uuid 採用128位的uuid演算法...