现在有这样一个要求,生成注水,最大为999999,6位的长度,
开始时,是000001,以后逐个递增。一天内保证唯一,如果大于最大值,则新开一个流水。
要求在高并发下,操作,获取,

解决方案 »

  1.   

    关键是你什么数据库,很多东西不是程序能够单独控制的。比如sqlserver用identity,oracle用序列等。。
      

  2.   

    有两个方法去实现:1.楼主可以封装一个java方法去连接数据库,利用db中的序列对象去取序列值.2.自己写一个单例类去计数.
      

  3.   

    这个跟什么数据库好象没有什么关系吧..
    我使用的是mysql .有三个字段 id  createDate mixNo
      

  4.   


                    String str = "000001";
    if(Integer.parseInt(str) == 999999){
    str = "000000";
    }
    String  number = (Integer.parseInt(str)+1)+"" ;
    int num = 6 - number.length() ;
    for (int i = 0; i < num; i++) {
    number = "0"+number;
    }
    System.out.println(number);
      

  5.   

    sequence不用数据库的话弄个 static个变量,自己设置个synchronized
      

  6.   


    sequence只有oracle有吧,人家是mysql数据库
    我感觉你可以新建一张表,两个字段,一个主键Id,数据库自增,另一个字段随便起,每次向这张表里插一条记录,然后获得生成的Id作为流水账号,达到999999的时候可以清空这个表,重新开始插入
      

  7.   

    用数据库auto_increment或者sequence得到唯一数字,然后 id%999999获得范围内的ID不知道如果一天之内流水号超过范围你们怎么处理,或者这个上限足够大不会被超出?
      

  8.   

    人家是要并发,不是synchronized个吧