文档章节

javaweb使用自定义id,快速编码与生成ID

尾生
 尾生
发布于 2017/02/15 20:25
字数 404
阅读 52
收藏 1
点赞 0
评论 0

项目需求,要求id改变1++的自增策略,而是使用自定义的varchar类型,长度定位24;

规则:

订单id : ord + 随机数+ 时间戳 

渠道id : ch +随机数 +时间戳

等,可自行设置规则

工具类:

import java.util.Random;

public class IdUtil {

	private static final Random _Rand = new Random();
	private static final char[] _number = ("0123456789").toCharArray();
	
	/**
	 * 获取指定位数数字 
	 * @param length
	 * @return
	 */
	public static final String RandNum(int length){
		String rand = "";
		for(int i=0,s=_number.length;i<length;i++){
			rand = rand + _number[_Rand.nextInt(s)];
		}
		return rand;
	}
	
	/**
	 * 生成user_id 
         * 根据等级规则
	 * @return
	 */
	public static final String getUid(int levelCode)
	{
		// UID + 00 + 13 = 18位
		long time = System.currentTimeMillis();
		return "UID"+(levelCode<10?"0":"")+levelCode+time;
	}
	
	/**
	 * 生成广告id,16位,ADV + time13 
	 * @return
	 */
	public static final String getAdvId(){
		long time = System.currentTimeMillis();
		return "ADV"+time;
	}
	
	 
	
	/**
	 * log记录id 
	 * @return
	 */
	public static final String getLogId(){
		long time = System.currentTimeMillis();
		return "LOG" + time + RandNum(3);
	}
}

 

hibernatePo设置

项目中集成hibernate映射, 因此,我们必须把其相对应的Po的主键生成策略注释掉;

@Id
	//@GeneratedValue 主键生成策略
	@Column(name = "id", unique = true, nullable = false)
	public long getId() {
		return id;
	}

 

hibernateSave方法重载

在调用hibernate save对象前,调用工具类手动生成UUID,赋值到对象中,save即可;

这里是不同类型表,生成不同ID,更近instanceof 判断类型,而调用相对于的Id方法

public Serializable saveReturnIdByUUID(Object entity) {
		/** 
		 * XX表
		 */
		if(entity instanceof UserNamePo){ 
			UserNamePo tempPo = (UserNamePo) entity;
			tempPo.setUserId(IdUtil.getUid());
			logger.info("手动生成id策略: 生成id值为:"+ tempPo.getUserId() );
			return saveReturnId(tempPo);
		}
		/**
		 * XX表
		 */
		if(entity instanceof AdvertInfoPo){ 
			AdvertInfoPo tempPo = (AdvertInfoPo) entity;
			tempPo.setAdvId(IdUtil.getAdvId());
			logger.info("手动生成id策略: 生成id值为:"+ tempPo.getAdvId() );
			return saveReturnId(tempPo);
		} 
		
		return null;
}

 

© 著作权归作者所有

共有 人打赏支持
尾生
粉丝 15
博文 133
码字总数 53946
作品 0
杭州
程序员
Java微信扫码支付

前言:让我用Java写个微信扫码支付,身为小白,网上搜了好多文章,终于找到一个看得明白的,链接。表示人家讲的够详细了,现在自己要是实现一个,我觉得吧,可能入手比较乱。其实后来发现,代...

ioufev ⋅ 2016/11/07 ⋅ 0

基于 YMP 框架实现的验证码模块--YMP-Captcha

Captcha 基于YMP框架实现的验证码模块,支持图片、邮件和短信三种验证类型,采用注解方式进行验证,配置简单、灵活,可自定义扩展; Maven包依赖 搭建模块工程 首先,你需要创建一个基于YMP...

有理想的鱼 ⋅ 2017/05/05 ⋅ 0

OpenJWeb快速开发平台数据库设计(一)(Oracle)

/ TABLENO:0010 * TABLENAME:序列号信息表(COMM_CONFIG) * TABLE DESC:为保证序列号生成与数据库无关,本系统单独建表存储不同序列号的当前值。本表只存储一条记录 * AUTHOR:王保政 * DATE:2...

迷途d书童 ⋅ 2012/03/09 ⋅ 0

SpringBoot集成SpringSecurity(入门级)

Springboot集成SpringSecurity 目录创建于2017-12-18 Springboot集成SpringSecurity Demo 快速上手-初步入门: 创建单用户单角色的安全控制 添加依赖...

mmythos ⋅ 2017/12/30 ⋅ 0

分布式系统中的ID生成

问题 在分布式系统中常遇到ID生成问题: 场景1,在分库分表中需要保证某类ID唯一,这样使用主键自增的策略就不再合适 场景2,需要某类ID需要具有同一特性来标识 诸如此类。 方案 有很多解决方...

chaun ⋅ 2015/12/01 ⋅ 0

功能表单之树形选择字段类型的高级使用——JEPLUS软件快速开发平台

JEPLUS功能表单之树形选择字段类型的高级使用 JEPLUS功能表单中树形选择字段类型的目标字段在开发过程中还有一些高级配置和高级应用,如果知晓怎么配置也许能解决我们系统开发过程的大问题,...

JEPLUS ⋅ 06/13 ⋅ 0

代码生成利器:IDEA 强大的 Live Templates

原文出处:肖汉松 前言 Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能...

肖汉松 ⋅ 2017/12/29 ⋅ 0

SpringMVC接口权限拦截器的实现

背景 每个网站都会和其它的公司或者平台有对接,有的公司内部的也会有接口的相互调用。但是接口的直接开放并不安全,必须有对应的令牌才能保证安全。令牌在什么时候去校验?自然是请求过来时...

文心丶雕龙 ⋅ 03/06 ⋅ 0

从零开始搭建微信硬件开发环境全过程——1小时掌握微信硬件开发流程

笔者决定在嵌入式企鹅圈2016年的首篇文章中,发表微信硬件物联领域极具实践价值的文章,它将能指引和帮助任何有兴趣于物联网开发的童鞋们快速掌握微信硬件开发流程,只需一个小时,而再不需要...

yueqian_scut ⋅ 2016/01/11 ⋅ 0

Hibernate的generator属性之意义【转】

Hibernate的generator属性之意义 本文讲述Hibernate的generator属性的意义。Generator属性有7种class,本文简略描述了这7种class的意义和用法。 Hibernate的Generator属性有7种class,本文简...

houyiwujing ⋅ 2012/02/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 28分钟前 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 45分钟前 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 今天 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 今天 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 9

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部