在很多程序的应用中,有许多的地方会用到流水号,我写了个专门用来生成流水号的类
使用:
SerialNumber sn=new SerialNumber();
sn.getSerialNum(tablename, column);//tablename 表名
//column 主键字段(流水号列)
sn.toString(num, length); //将指定的数字格式化 如:
sn.toString(1,4); //结果为0001
下面是SerialNumber类的源代码
package com.aiy.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.aiy.base.DatabaseUtil;
/**
*
* @author aiyanbo
*
*/
public class SerialNumber {
private String prefix="SN";
private String timeFormat="yyMMdd";
private int digit=4;
public SerialNumber() {}
public SerialNumber(String prefix) {
this.prefix = prefix;
}
public SerialNumber(String prefix, String timeFormat, int digit) {
if(digit<2)
digit=2;
this.prefix = prefix;
this.timeFormat = timeFormat;
this.digit = digit;
}
public synchronized String getSerialNum(String tablename,String column){
SerialSource ins=setInstace(tablename, column);
String date=getDate();
if(ins==null){
return prefix+date+toString(1, digit);
}
int max=getMax(ins.getSn());
return prefix+date+toString(max, digit);
}
private SerialSource setInstace(String tablename,String column){
DatabaseUtil<SerialSource> db=new DatabaseUtil<SerialSource>(SerialSource.class);
String sql="select top 1 "+column+" sn from "+tablename+" where "+column+" like '"+(prefix+getDate())+"%' order by "+column+" desc";
return db.queryOne(sql);
}
private String getDate(){
SimpleDateFormat format=new SimpleDateFormat(timeFormat);
Date date=new Date();
return format.format(date);
}
private int getMax(String sn){
return Integer.parseInt(sn.substring((prefix+getDate()).length()))+1;
}
public String toString(int num,int length){
String str="";
String numlen=""+num;
for(int i=length-(numlen.length());i>0;i-- ){
str=str+"0";
}
return str+num;
}
}
分享到:
- 2009-09-28 20:23
- 浏览 10644
- 评论(7)
- 论坛回复 / 浏览 (7 / 6380)
- 查看更多
相关推荐
业务流水号(Business Transaction Serial Number)则是系统中用于唯一标识每一次业务操作的编号,它通常包含时间戳和其他随机或递增的元素,以确保唯一性和可追溯性。 在二维码生成方面,我们可以使用多种编程语言...
从描述中可以看出,这个编码类可能是为VC6.0(Visual C++ 6.0)开发的一个C++类库,用于生成流水号和序列号。VC6.0是一款经典的微软开发环境,支持C++语言,该编码类可能包含了适用于C++编程的接口和方法,方便...
MTK平台SN写号工具是针对MediaTek(联发科)处理器平台设计的一款专用软件,主要用于在测试和生产阶段为设备编写唯一序列号(Serial Number,简称SN)。这个工具的出现极大地方便了制造商和工程师对MTK平台手机或...
#Auto ID A Drupal module for generating datetime-based serial numbers, for example SALES201502280001. ##Usage Install the module, Then you can find configuration link in admin/...用于生成流水号(例如
- **CardRecords** 表:此表可能包含了会员卡的相关信息,如`CardID`(卡片ID)、`TradingType`(交易类型)、`TradingMoney`(交易金额)、`TradingDate`(交易日期)、`SerialNumber`(序列号)等。这些字段用于...
通过分析过往的分支模式,BHT能够预测当前分支指令的结果,从而提高流水线效率和程序执行速度。 #### 6. BPU (分支处理单元) **中文名称:** 分支处理单元 **英文全称:** Branch Processing Unit **定义:** BPU...