在很多程序的应用中,有许多的地方会用到流水号,我写了个专门用来生成流水号的类
使用:
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
- 浏览 10627
- 评论(7)
- 论坛回复 / 浏览 (7 / 6372)
- 查看更多
相关推荐
《Serialnumber 生成类库 DLL 全面解析》 在软件开发中,序列号生成是一项重要的功能,用于软件授权和防止非法复制。本文将详细解析一个名为“Serialnumber 生成类库 DLL”的工具,该工具提供了高效且灵活的序列号...
一些开发环境对于多个USB设备(同时插入多个设备),通过serial number区别使用不同的USB设备。 得到USB设备VID和PID方法。插拔一次设备,执行如下命令。 $ sudo dmesg -c [ 3638.911666] usb 2-2.1: new full-speed ...
### JAVA生成订单号(日期+流水号)的知识点解析 #### 一、概述 在现代电商及金融系统中,订单号作为唯一标识符扮演着极其重要的角色。它不仅需要具备唯一性,还要易于管理和追踪。本文将详细介绍一个通过Java语言...
Lumion8.0 Pro Serial number reading toolLumion8.0 Pro Serial number reading tool
这段代码使用了JNA库来访问Windows WMI服务,查询`Win32_BaseBoard`类的`SerialNumber`属性,从而获取主板序列号。 总的来说,获取硬盘和主板序列号在Java中需要根据具体的操作系统和可用的API来实现。在实际开发中...
硬盘序列号(Serial Number)是每个硬盘制造商在生产时赋予的唯一标识符,用于区分不同的硬盘。本教程将详细介绍如何在C#中获取硬盘序列号。 首先,我们需要了解Windows操作系统提供的API(应用程序接口)函数,...
All SAP Serial Number Tables.
业务流水号(Business Transaction Serial Number)则是系统中用于唯一标识每一次业务操作的编号,它通常包含时间戳和其他随机或递增的元素,以确保唯一性和可追溯性。 在二维码生成方面,我们可以使用多种编程语言...
在给定的“Produced-four-serial-for-java.rar”压缩包中,包含了一个用于生成四位流水号的Java代码示例,其主要目标是生成从0001到XXXX的连续四位数字流水号。 生成流水号的方法有很多种,这里我们重点关注描述中...
serial number weishayidingyoa miaoshu a zhenshi kengdie hai de dayu 20zi
"Serial Number"则是软件激活所必需的产品序列号,确保用户对软件的合法使用权。 在提供的描述中,".rar"文件格式表明压缩包使用RAR压缩算法,这是一种常见的文件压缩格式,用于将多个文件打包成一个文件以便于传输...
在使用 HardDisk SerialNumber Changer 之前,用户应确保已经备份了重要数据,因为任何对硬盘的修改都存在潜在风险。同时,了解相关法律法规,确保此类操作在合法范围内。虽然该软件提供了便利,但滥用或非法使用...
### 使用SIM卡SerialNumber判断省份 #### 一、概述 在移动通信领域,SIM卡(Subscriber Identity Module,用户身份模块)是一种存储用户信息的小型集成电路卡。为了方便管理和追踪,每张SIM卡都有一个唯一的Serial...
Setup Factory v8.2.1.0 Serial Number For Win7
VID代表Vendor ID,即厂商标识号,PID代表Product ID,即产品标识号,而SerialNumber代表设备的序列号。VID和PID共同构成了一个USB设备的唯一标识,通常用于软件层面识别设备。 在这段代码中,使用了Windows的Setup...
可以修改PC机的逻辑盘的序列号。使用后,可以恢复。
在探讨“HTML5 Builder Serial Number”这一主题时,首先需要明确的是,该串号(Serial Number: 3AFL-GB6DZ2-U7RXDD-DBHA)与HTML5 Builder软件产品有关。通常情况下,这样的序列号用于验证用户是否拥有使用特定软件...
标题“Changing volume's serial number”涉及的是操作系统中更改卷序列号的操作。卷序列号是每个磁盘分区的一个唯一标识符,通常由操作系统在创建卷时随机生成。在某些情况下,如系统恢复、数据隐私保护或者特定...
流水号(Sequential Number)通常是指按照特定顺序生成的一系列数字,它反映了数据的生成顺序,可以用来追踪记录,例如订单号、交易号等。流水号的设计通常不包含随机性,而是按照递增或递减的方式生成,确保每个新...