整数id和字符串id都是很常用的,数据库也有工具提供支持。我们也可以通过程序自动生成,效率也很高,如果:
synchronized (this) {
maxSeqNo = new Integer(curMaxId++);
}
//第一次使用需要读取数据库的最大值
但是我们使用的环境多种多样,比如在集群、多数据库(后台程序定时同步数据)的情况下有的方法就不适用,而且,开发人员也不应该关心底层的具体实现方式,因此需要我们封装标准的整数id(IntId)、字符串id(StringId)的生成类。我们可以根据实际情况灵活配置。
序列号也是另外一种id,由于有时候需要和日期或者部门绑定,因此我们也提供一个序列号的生成类(Serial)。
下面是对外公开的方法:
/**
* 通过条件生成顺序号
* @param tableName 表名(类别)
* @return 生成顺序号
* @throws java.lang.Exception 执行失败
*/
static public Integer getIdentity(String tableName) throws Exception
/**
* 取下一个字符串id
* @param tableName 表名(类别)
* @return 下一个字符串id
* @throws java.lang.Exception
*/
static public Integer getNextStringId(String tableName) throws Exception
/**
* 通过条件生成序列号
* @param serialName 序列号名字(模板)
* @param depNO 部门
* @param date 时间
* @return 生成序列号
* @throws java.lang.Exception 执行失败
*/
static public String getSerialNO(String serialName, String depNO, String date) throws Exception