整數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