生成全局ID的方法很多, 这里记录下一种简单的方案: 利用mysql的自增id生成全局唯一ID.
1. 创建一张只需要两个字段的表:
CREATE TABLE `guid` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`stub` char(1) NOT NULL DEFAULT '' COMMENT '桩字段,占坑的',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_stub` (`stub`) -- 将 stub 设为唯一索引
) ENGINE=MyISAM AUTO_INCREMENT=1000000000 DEFAULT CHARSET=utf8;
指定自增起始: alter table guid auto_increment=1000000000
, 这样可以保证ID为10位(涨到11位几乎不可能吧).
2. 定义 mybatis mapper:
@Mapper
public interface GuidMapper {
/**获取全局唯一ID
* @return
*/
// replace into afs_guid(stub) values('a');
// select last_insert_id();
@Insert("REPLACE INTO guid (stub) VALUES('a')")
@SelectKey(statement = {"SELEC