在Java编程中,自定义字符串自增是一个实用的功能,尤其是在处理项目中的主键生成,特别是在那些需要类似于VARCHAR类型的字段,需要程序自动进行递增计数的情况。本文档关注的是一个名为`PrimaryKey`的类,它实现了这种自增功能。 `PrimaryKey`类的主要目标是生成唯一的、格式化的字符串标识,通常用作数据库中的主键。该类包含了以下几个关键属性: 1. **MIN_DATA** 和 **MAX_DATA**: 定义了字符串自增时可能的字符范围,这里是0到9。 2. **START_DATA**: 初始值,一般设置为1,用于生成序列号。 3. **DEFAULT_SIZE**: 默认的字符串长度,如果用户不提供,则使用这个值。 4. **MAX_KEYSIZE_VALUE**: 最大允许的字符串长度限制,这里设定为18个字符(包括头几位)以适应long类型的存储。 5. **DEFAULT_HEAD**: 指定字符串的默认前缀,如"KEY"。 6. **keyHead**: 用户可以自定义的字符串前缀。 7. **keySize**: 用户提供的字符串长度,如果没有指定则使用默认值。 8. **keyInc**: 一个布尔值,表示是否开启自增模式。 9. **startExecute** 和 **finishExecute**: 分别记录自增的开始和结束时间,可用于监控或控制自增操作的执行。 类的方法包括: - **构造函数**: 接收keyHead、keySize和keyInc作为参数,对这些参数进行校验并设置默认值。如果用户提供的keySize超出最大值,会调整为默认大小。同样,如果keyHead不符合规范,也会使用默认前缀。 - **checkSize()** 和 **checkHead()**: 内部方法,用于检查输入的keySize和keyHead是否符合预期格式,确保数据的合法性。 通过这种方式,`PrimaryKey`类为开发者提供了一个灵活的方式来生成具有自增特性的字符串,这在很多场景下非常有用,例如订单号、流水号、用户ID等。它使得代码更加模块化和易于管理,提高了项目的可维护性和扩展性。同时,通过设置自增模式,可以避免手动管理主键的繁琐,提升了开发效率。
/**
* 字符串主键自增,条件当传进来的Str是空时,自动创建初始化主键
* 后面的依次自增
* @author lizhenbin
* 程序实现字符串主键自增,例如:“SN000001”,希望下一条数据是“SN000002”,
* 所以需要字符串主键自增,所以需要传入上一次的主键的字符串,通过调用工具类的方法可以获取下一条记录。
*
*/
public class PrimaryKey {
// 数字串最小值
private static final char MIN_DATA = '0';
// 数字串最大值
private static final char MAX_DATA = '9';
// 数字串默认从1开始
private static final char START_DATA = '1';
// 默认长度
private static final int DEFAULT_SIZE = 8;
// KeySize的最大数
// Long的最大长度是19位,防止溢出
private static final int MAX_KEYSIZE_VALUE = 18;
// 默认字符串Head
private static final String DEFAULT_HEAD = "KEY";
// 主键字符串头部
private String keyHead;
// 字符串数字位数,不足补0
private Integer keySize = 8;
// 是否允许数字最大之后自增,默认false
private boolean keyInc = false;
private Long startExecute = 0L;
// 程序执行结束系统时间
private Long finishExecute = 0L;
/**
* 初始化主键字符串格式,默认达到KeySize后不可自增
* @param keyHead 字符串开头部分
* @param keySize 字符串数组长度
*/
public PrimaryKey(String keyHead, Integer keySize) {
super();
/**
* 设置不可自增
*/
if(this.checkSize(keySize))
this.keySize = keySize;
else
this.keySize = this.DEFAULT_SIZE;
if(this.checkHead(keyHead))
this.keyHead = keyHead;
else
this.keyHead = this.DEFAULT_HEAD;
}
/**
* 初始化主键字符串的格式
* @param keyHead 字符串开头部分
* @param keySize 字符串数组长度
* @param keyInc 数值最大值之后是否允许自增
剩余8页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦