用户对象里有一个用户代码属性,是String类型的。
我想在提交表单的时候,自动生成用户代码,格式如A0001,A0002,A0099;
每增加一个用户,生成一个用户代码,而且是后一个比前一个大一,即递增,
这个功能要在Action中怎么实现呢?
系统是:Struts2 + Spring2 + Hibernate3 + MySQL

解决方案 »

  1.   

    后面的数字leftpad一下0之后,拼接一个A就好了
      

  2.   

    String oldCode = "A0001";
    String newCode = "A" + ((10000 + Integer.parseInt(oldCode.substring(1), 10)) + "").substring(1);
      

  3.   

    String oldCode = "A0001";
    String newCode = "A" + ((10000 + Integer.parseInt(oldCode.substring(1), 10)) + 1 + "").substring(1);
      

  4.   

    别直接在action中写
    写一个工具类来处理它
      

  5.   

    你可以在数据库中使用自增的方式定义
    然后那个A嘛,再附加个字段不就好了嘛
    随便以后还有B啊C啊什么的我以前就是这样做的
    呵呵
    祝你成功
      

  6.   

    2楼的方法忽略了需求不是顺序不停增加记录的,而是在增加操作触发时增加,所以要先从db取最大id出来
    你的id是string,所以处理相对复杂
    String maxid = channelDao.getMaxId();
    if(maxid==null){
        newid = "A0001";
       //添加操作
    }else{
           int id = Integer.parseInt(maxid.substring(1))+1;
           int size = maxid.length()-String.valueOf(id).length()-1;
           String newid = "A";
           for (int i = 0; i < size; i++) {
               newid+="0";
           }
           newid+=String.valueOf(id);
           System.out.println(newid);
       //添加操作
    }
      

  7.   


    用sequence,在操作失败的时候也是会加1的,所以你的序列号可能跳步,稳妥地还是查询以后在加1处理