做视频网站怎么盈利模式,河北省建设厅报名网站,网站做全景,北京到广州列车时刻表一#xff1a;概述
很多业务场景都需要获取不重复的业务流水号#xff0c;当微服务项目或服务多节点部署时#xff0c;获取流水号场景使用分布式锁性能低下#xff0c;可以基于数据库行锁实现获取不重复流水号。
二#xff1a;创建流水号数据库
CREATE TABLE serial (i…一概述
很多业务场景都需要获取不重复的业务流水号当微服务项目或服务多节点部署时获取流水号场景使用分布式锁性能低下可以基于数据库行锁实现获取不重复流水号。
二创建流水号数据库
CREATE TABLE serial (id varchar(32) NOT NULL COMMENT 唯一标识,prefix varchar(32) DEFAULT NULL COMMENT 流水前缀,num int(11) DEFAULT NULL COMMENT 流水序号,PRIMARY KEY (id),UNIQUE KEY serial_prefix_IDX (prefix) USING BTREE
) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT流水号;三获取流水工具
3.1创建mapper方法及对应xml文件
## mapper文件创建两个方法
/*** 根据前缀获取流水号* param prefix* return*/Serial getByPrefix(Param(prefix)String prefix);/*** 更新流水号* return*/Integer updSerial(Param(id)String id,Param(num)Integer num);## 对应 xml文件方法select idgetByPrefix resultType。。。Serialselect * from serial sde where prefix #{prefix}/selectupdate idupdSerialupdate serial set num#{num}1 where id#{id} and num #{num}/update3.2获取流水号方法
Resourceprivate SerialMapper mapper;Overridepublic String getNum(String prefix) {while (true){Serial num mapper.getByPrefix(prefix);if(numnull){this.insert(new Serial(prefix,1));return String.format(%05d,1);}else {if(mapper.updSerial(num.getId(),num.getNum())0){return String.format(%05d,num.getNum()1);}}}}