当前位置: 首页 > news >正文

获取不重复流水号(java)

一:概述

很多业务场景都需要获取不重复的业务流水号,当微服务项目或服务多节点部署时,获取流水号场景使用分布式锁性能低下,可以基于数据库行锁实现获取不重复流水号。

二:创建流水号数据库

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
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 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 id="getByPrefix" resultType="。。。Serial">select * from serial sde where prefix = #{prefix}</select><update id="updSerial">update serial set num=#{num}+1 where id=#{id} and num =#{num}</update>

3.2:获取流水号方法

@Resourceprivate SerialMapper mapper;@Overridepublic String getNum(String prefix) {while (true){Serial num = mapper.getByPrefix(prefix);if(num==null){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);}}}}
http://www.lryc.cn/news/402103.html

相关文章:

  • 【python虚拟环境管理】【mac m3】 使用pipx安装poetry
  • git使用以及理解
  • openlayers 3d 地图 非三维 立体地图 行政区划裁剪 地图背景
  • GEO数据挖掘从数据下载处理质控到差异分析全流程分析步骤指南
  • ‍我想我大抵是疯了,我喜欢上了写单元测试
  • 【Visual Studio】Visual Studio使用技巧及报错解决合集
  • 服务器数据恢复—raid5阵列热备盘同步失败导致lun不可用的数据恢复案例
  • 算法题目整合
  • 万界星空科技AI低代码平台:重塑数字化创新边界
  • iredmail服务器安装步骤详解!如何做配置?
  • 【vue深入学习第1章】Vue.js 中的 Ajax 处理:vue-resource 库的深度解析
  • JDK新特性(Lambda表达式,Stream流)
  • 【ARM】MDK-服务器与客户端不同网段内出现卡顿问题
  • c++树(一)定义,遍历
  • YOLOv5和LPRNet的车牌识别系统
  • 内容安全(深度行为检测技术、IPS、AV、入侵检测方法)
  • MySQL双主双从实现方式
  • pico+unity手柄和摄像机控制初级设置
  • vxe-grid 实现配置式form搜索条件 form搜索条件框可折叠 配置式table
  • TS相较于JS有什么优缺点
  • 【Harmony】SCU暑期实训鸿蒙开发学习日记Day2
  • vue3前端开发-执行npm run dev提示报错怎么解决
  • https 单向认证和双向认证
  • Python中Selenium 和 keyboard 库的使用
  • 网络安全协议系列
  • .net core appsettings.json 配置 http 无法访问
  • opencv—常用函数学习_“干货“_11
  • WSL-Ubuntu20.04部署环境配置
  • 6Python的Pandas:数据读取与输出
  • ubuntu 网络 通讯学习笔记2