要求是查到最新的一笔流水号在此基础上按照固定规则+1生成新的流水号
String sql="select nvl(max(SERIAL_NO),'0') as \"serialNo\" from XXX ";//从数据库中查出最近的一笔流水号
SQLQuery query = session.createSQLQuery(sql);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
List list = query.list();
String listSerialNo;
String temp4;
if (list[0].serialNo=="0" || list[0].serialNo==null){//如果表中没有值
temp4="00000000"
}else {
//计算流水号的算法 实现2018121400000000 → 2018121400000001 (每次的流水号变化)
listSerialNo=list[0].serialNo
String temp1=listSerialNo.substring(listSerialNo.length()-8)
Long temp2=(Long.valueOf(temp1)+1)%100000000
String temp3="00000000"+String.valueOf(temp2)
temp4=temp3.substring(temp3.length()-8)
}
Date date=new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String serialNo=sdf.format(date)+temp4