项目需求,要求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
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;}