Java生成规律编码的思路
/***
*
* getCommonBh:(获得通用的编号:前缀(一般是单位的前N位+当前时间(自定义格式)+格式化的sequence值:00001)). <br/>
* @param prefix 编号的前缀
* @param timeFormt 日期格式,在需求添加日期时候使用
* @param sequenceName sequence名称
* @param length sequence格式 %08d:8位不够的补0
* @return 唯一的编号
* @since JDK 1.6
*/
public String getCommonBh(String prefix, String timeFormt, String sequenceName, String length)
{
String datenumber = "";
if (StringUtils.isNotEmpty(timeFormt))
{
datenumber = DateUtils.doFormatDate(new Date(), timeFormt);
}
if (StringUtils.isEmpty(length))
{
length = "8";
}
String seqStr = getSequenceByName(sequenceName, length);
return new StringBuilder(prefix).append(datenumber).append(seqStr).toString();
}
/**
*
* getSequenceByName:(获取一定格式的sequence值). <br/>
* @param sequenceName sequence名称
* @param length 需要的长度,格式例如::8位不够的补0
* @return String 格式化后的sequence值
* @since JDK 1.6
*/
public String getSequenceByName(final String sequenceName, final String length)
{
if (StringUtils.isBlank(sequenceName))
{
return "";
}
else
{
return (String)this.getHibernateTemplate().execute(new HibernateCallback()
{
public Object doInHibernate(Session session)
throws SQLException
{
Query query = getSession().createSQLQuery(" SELECT " + sequenceName + ".nextval from dual");
BigDecimal seq = (BigDecimal)query.uniqueResult();
if (seq != null)
{
return String.format("%0" + length + "d", seq.longValue());
}
else
{
return "001";
}
}
});
}
}