两个通用的产生一个编号字段的思路

 两个通用的产生一个编号字段的方案(Java)

以下是我写的方案,大家有什么其它好的方法吗?

 

  
  
  
  
  1. /* 
  2. * 获取一个记录编号 
  3. * 格式:12 位时间+业务编号+随即数 
  4. * 例如:100330101028+04+893 (2010-03-30-10:20:28, 业务号是04, 随机数893 ) 
  5. *@param btype 业务类型编号 员工业务01 招聘业务02…… 
  6. *@return code 构造的一个记录编号 
  7. */ 
  8. public static String getCode(String btype){ 
  9.  
  10. //返回的code 
  11. String code; 
  12. //系统当前时间 12位 
  13. SimpleDateFormat sdf=new SimpleDateFormat("yyMMddhhmmss"); 
  14. String nowDate=sdf.format(new java.util.Date()); 
  15.  
  16. //随机数 
  17. String iRandom = Math.round(Math.random()*900 )+100 +""
  18.  
  19. //整合一个code 
  20. return nowDate+btype+iRandom; 

 

以下是另一种:

 

  
  
  
  
  1. /* 
  2. * 获取一个记录编号 
  3. * 由于不存在随机数相同的风险了,这是只要6位时间即可 
  4. * 格式:6 位时间+业务编号+该业务的当天数量 
  5. * 例如:100330+04+00003 (2010-03-30-10:20:28, 业务号是04, 当天这个业务是第3笔 ) 
  6. *@param btype 业务类型编号 员工业务01 招聘业务02…… 
  7. *@return code 构造的一个记录编号 
  8. */ 
  9. public static String getCode(String btype){ 
  10.  
  11. //返回的code 
  12. String code; 
  13. //系统当前时间 6位 
  14. SimpleDateFormat sdf=new SimpleDateFormat("yyMMdd"); 
  15. String nowDate=sdf.format(new java.util.Date()); 
  16.  
  17. //以上和方案1是一致的,但没有随机数了 换成了业务数量了 
  18. String bamountStr = ""
  19.  
  20. /* 
  21. * 操作表BusinessToday 
  22. * 找出当天对应btype的业务数量,加1后作为bamount,并且更新数据库,bamount字段++ 
  23. * 这个过程是用存储过程实现的,这是只是用伪代码表示 
  24. */ 
  25. //Query Table BusinessToday, get the val of bamount and bdate 
  26. SELECT bamount, bdate FROM businesstoday WHERE btype = ''
  27. //Check bdate is today? 
  28. if(bdate == today) 
  29. bamoutStr = ( bamount + 1) => String类型 
  30. //today is another day, bdate != today 
  31. //更新bdate字段,bamount置0 
  32. else 
  33. UPDATE bamount =0
  34. UPDATE bdate = today; 
  35. bamoutStr = ( bamount + 1) => String类型 
  36.  
  37. //整合一个code 
  38. return nowDate+btype+bamountStr; 

附件中有这个的数据库设计

你可能感兴趣的:(java,字段,方案,休闲,随机编号)