java 流水账号生成器_Java之流水号生成器(示例代码)

开心一笑

cdb02d991f3967f59b25fa8cda834ade.png

提出问题

如何使用jAVA生成流水号,同时支持可配置和高并发???

解决问题

假设你们项目已经整合缓存技术

假如你有一定的Java基础

假如……

下面的代码实现的是一个支持高并发,可配置,效率高的流水号生成器,可同时为一个项目的多个模块使用,流水号支持缓存,即每次会预先生成一定数量的流水号存放在缓存中,需要的时候,优先到缓存中去,缓存中的序列号使用完之后,重新生成一定数量的流水号放到缓存中,如此循环,提高效率……

同时,该流水号生成器是线程安全的,使用线程锁进行保护,已经真正的投入到项目中使用……

数据库表设计

CREATE TABLE sys_serial_number2 (

"id" varchar(32) COLLATE "default" NOT NULL,

"module_name" varchar(50) COLLATE "default",

"module_code" varchar(50) COLLATE "default",

"config_templet" varchar(50) COLLATE "default",

"max_serial" varchar(32) COLLATE "default",

"pre_max_num" varchar(32) COLLATE "default",

"is_auto_increment" char(1) COLLATE "default"

)

说明:

module_name:模块名称

module_code:模块编码

config_templet:当前模块 使用的序列号模板

max_serial:存放当前序列号的值

pre_max_num:预生成序列号存放到缓存的个数

is_auto_increment:是否自动增长模式,0:否 1:是

注意:目前序列号模板只支持字母,动态数字(0000 代表1-9999),和日期用${DATE}的组合形式

is_auto_increment配置为1 ,这时配置模板为CX000000生成的序列号为:CX1 ,CX2,CX3…..

配置为0,这时配置模板为CX0000000生成的序列号为:CX00000001,CX00000002,CX00000003

数据库配置说明:如需要项目模块的项目编号,则需要在数据库表sys_serial_number中配置一条记录:

| id | module_name | module_code | config_templet | max_serial | pre_max_num | is_auto_increment

|-------|--------------|--------------|-----------------|-------------|-------------|--------------------/

| xxxx | 项目 | PJ |CX00000000${DATE}| 2650 | 100 | 1

CX00000000${DATE}生成的序列号类似于:CX0000000120160522 ,CX0000000220160522,CX0000000320160522 ……

序列号model实体设计:

package com.evada.de.serialnum.model;

import com.evada.de.common.model.BaseModel;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.Table;

/**

* 功能描述:序列号表模型

*

* @author :Ay 2015/11/23

*/

@Entity

@Table(name="sys_serial_number")

public class SystemSerialNumber extends BaseModel {

/**

* 模块名称

*/

@Column(name = "module_name", columnDefinition = "VARCHAR")

private String moduleName;

/**

* 模块编码

*/

@Column(name = "

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值