java流水号生成的几种方式

1.在数据库中新建一张排序表格,每执行一次任务,数据库中值+1.查询时进行倒叙排序.

public String newOutsourceStaffId() throws Exception {
        String maxOutsourceStaffId = (String)dao.findForObject("StaffMapper.maxOutsourceStaffId", null);
        //获取流水号
        int index = maxOutsourceStaffId.indexOf(OUTSOURCE_STAFF_ID_PREFIX) + OUTSOURCE_STAFF_ID_PREFIX.length();
        int maxOutsoureStaffNum = Integer.valueOf(maxOutsourceStaffId.substring(index, maxOutsourceStaffId.length()));
        //不足3位时补零
        return maxOutsoureStaffNum < 99 ? 
                OUTSOURCE_STAFF_ID_PREFIX + "0" + (maxOutsoureStaffNum + 1) : 
                    OUTSOURCE_STAFF_ID_PREFIX + (maxOutsoureStaffNum + 1);
    }
 

缺点:不支持分布式

 

2.从数据库中查询当天已生成的记录数量  结果值+1 

你可能感兴趣的:(java流水号生成的几种方式)