「java时间编号避免重复」java生成不重复规则编号

博主:adminadmin 2023-01-19 08:27:06 388

本篇文章给大家谈谈java时间编号避免重复,以及java生成不重复规则编号对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java自动生成‘日期0001’顺序号 如‘201404170001’,生成下一个时不重复

#DROP FUNCTION IF EXISTS func_getVoucherId ;

CREATE FUNCTION func_getVoucherId /*生成凭证编号*/

(

f_str varchar(255)

)

returns varchar(255) charset utf8

begin

/*获取最大凭证号*/

declare v_maxVoucherId varchar(255) default '';

/*获取最大凭证号*/

declare v_flowMaxVoucherId varchar(255) default '';

/*新的凭证号*/

declare v_newVoucherId varchar(255) default '';

/*判断是新增存盘还是入账存盘*/

if ifnull(rtrim(f_str),'') = '' then

select max(voucher_code) into v_maxVoucherId from finance_voucher ;

if ifnull(rtrim(v_maxVoucherId),'')='' then

set v_newVoucherId = rpad(replace(cast(curdate() as char(255)),'-',''),11,0); /*生成凭证编号*/

else

set v_newVoucherId = convert((convert(v_maxVoucherId,signed)+1),char(255));

end if ;

elseif ifnull(rtrim(f_str),'') = 'r' then

select max(voucherInfo) into v_flowMaxVoucherId from province_voucher_account_flow ;

if ifnull(rtrim(v_flowMaxVoucherId),'')='' then

set v_newVoucherId = rpad(replace(cast(curdate() as char(255)),'-',''),12,0); /*生成凭证编号*/

else

set v_newVoucherId = convert((convert(v_flowMaxVoucherId,signed)+1),char(255));

end if ;

end if ;

return v_newVoucherId ;

end ;

我目前做的项目也涉及到了这个生成规则,我用MYSQL数据库函数写了一个,你看下吧,希望能帮到你

java查询时出现这种编号重复问题怎么办?什么原因?求大神指教!!

初步判断应该是你分页设置的时候出现错误,你可以将每次分页的数据输出到控制台看看

还有就是你用的sql分页还是后台分页

java怎么生成一个一天内不会重复的20位流水号

我为您写了 一遍,望采纳。

package Zxing;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Random;

/**

 * 

 * 开发公司:SOJSON在线工具 p

 * 版权所有:© 

 * 博客地址:

 * p

 * 

 * Demo

 * 

 * p

 * 

 * 区分 责任人 日期说明br/

 * 创建 周柏成 2017年4月11日 09:43  br/

 *

 * @author zhou-baicheng

 * @email  so@sojson.com

 * @version 1.0,2017年4月11日 09:43 br/

 * 

 */

public class Demo {

    public static void main(String[] args) {

        //格式化当前时间

        SimpleDateFormat sfDate = new SimpleDateFormat("yyyyMMddHHmmssSSS");

        String strDate = sfDate.format(new Date());

        //得到17位时间如:20170411094039080

        System.out.println("时间17位:" + strDate);

        //为了防止高并发重复,再获取3个随机数

        String random = getRandom620(3);

        

        //最后得到20位订单编号。

        System.out.println("订单号20位:" + strDate + random);

        

    }

    /**

     * 获取6-10 的随机位数数字

     * @param length    想要生成的长度

     * @return result

     */

    public static String getRandom620(Integer length) {

        String result = "";

        Random rand = new Random();

        int n = 20;

        if (null != length  length  0) {

            n = length;

        }

        int randInt = 0;

        for (int i = 0; i  n; i++) {

            randInt = rand.nextInt(10);

            result += randInt;

        }

        return result;

    }

}

java 按照时间来统计 去除重复数据

你只需要考虑两点进行比较。

第一点:考虑用户ID,第二点:考虑时间

当你读取一条log信息的时候,取出用户ID和时间,

我不清楚你是实时的在执行往DB里面插入还是过一点时间整理,

如果是实时插入,那么你取出这个log信息的时候,就需要去现在的数据库里面进行匹配

带入用户ID,和时间,时间就以小时计算,如:2014-11-18 17

如果在数据库查询出了这条数据,那么跳出,如果没有查询出结果,那么新增。

第二种情况,如果你是隔一段时间执行一次,那么你就只需要新建一个list集合,

然后用取出的log的集合循环和新的list数据进行匹配,如果遇到有的就跳出,如果在新的list集合里面没有的

那么就添加到新的list集合里面。

写的有点乱,我这里不建议你用list,这样匹配的时候循环工作量非常大,建议使用hashmap,键值对处理起来方便,

以用户ID为key 方便处理。

java时间编号避免重复的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java生成不重复规则编号、java时间编号避免重复的信息别忘了在本站进行查找喔。