java生成20位唯一健_java中自动生成编码,例如18位,20位等

/***

*

* getCommonBh:(获得通用的编号:前缀(一般是单位的前N位+当前时间(自定义格式)+格式化的sequence值:00001)).

* @author syzhao

* @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值).

* @author syzhao

* @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";

}

}

});

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值