「java时间编号避免重复」java生成不重复规则编号
本篇文章给大家谈谈java时间编号避免重复,以及java生成不重复规则编号对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java自动生成‘日期0001’顺序号 如‘201404170001’,生成下一个时不重复
- 2、java查询时出现这种编号重复问题怎么办?什么原因?求大神指教!!
- 3、java怎么生成一个一天内不会重复的20位流水号
- 4、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时间编号避免重复的信息别忘了在本站进行查找喔。