1.java生成32位随机不重复数字+字母(做主键)
调用:
String ID = GuidUtil.generate();
GuidUtil.java:
/**
*
*/
package com.select.controller;
/**
* 生成GUID编码(使用hibernate的uuid生成机制)
*
* @author
* @since 2013-06-24
* @version 1.0
* @see
*/
public class GuidUtil
{
private GuidUtil()
{
}
/**
* 生成GUID编码
*/
public static String generate()
{
UUIDGenerator uGenerator = new UUIDGenerator();
String uuid = String.valueOf(uGenerator.generate());
return uuid;
}
public static void main(String[] a)
{
System.out.println(GuidUtil.generate());
}
}
package com.jbfs.base.util;
import java.io.Serializable;
import java.net.InetAddress;
public class UUIDGenerator
{
private static final int IP;
protected static int IptoInt(byte[] bytes)
{
int result = 0;
for (int i = 0; i < 4; i++)
{
result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];
}
return result;
}
static
{
int ipadd;
try
{
ipadd = IptoInt(InetAddress.getLocalHost().getAddress());
}
catch (Exception e)
{
ipadd = 0;
}
IP = ipadd;
}
private static short counter = (short) 0;
private static final int JVM = (int) (System.currentTimeMillis() >>> 8);
protected UUIDGenerator()
{
}
/**
* Unique across JVMs on this machine (unless they load this class in the
* same quater second - very unlikely)
*/
protected int getJVM()
{
return JVM;
}
/**
* Unique in a millisecond for this JVM instance (unless there are >
* Short.MAX_VALUE instances created in a millisecond)
*/
protected short getCount()
{
synchronized (UUIDGenerator.class)
{
if (counter < 0)
counter = 0;
return counter++;
}
}
/**
* Unique in a local network
*/
protected int getIP()
{
return IP;
}
/**
* Unique down to millisecond
*/
protected short getHiTime()
{
return (short) (System.currentTimeMillis() >>> 32);
}
protected int getLoTime()
{
return (int) System.currentTimeMillis();
}
private final static String sep = "";
protected String format(int intval)
{
String formatted = Integer.toHexString(intval);
StringBuffer buf = new StringBuffer("00000000");
buf.replace(8 - formatted.length(), 8, formatted);
return buf.toString();
}
protected String format(short shortval)
{
String formatted = Integer.toHexString(shortval);
StringBuffer buf = new StringBuffer("0000");
buf.replace(4 - formatted.length(), 4, formatted);
return buf.toString();
}
protected Serializable generate()
{
return new StringBuffer(36).append(format(getIP())).append(sep).append(format(getJVM())).append(sep).append(format(getHiTime())).append(sep).append(format(getLoTime())).append(sep).append(format(getCount())).toString();
}
public static void main(String[] args)
{
UUIDGenerator u = new UUIDGenerator();
long lstart = System.currentTimeMillis();
int num = 100;
for(int i=0;i<num;i++)
{
String id = String.valueOf(u.generate());
//System.out.println("#################UUID:" + id);
}
}
}
2.向oracle表中插入32随机不重复主键语句
create or replace function get_user
return varchar2
is
Result varchar2(50);
begin
select SYS_GUID() into Result from user_users;
return(Result);
end get_user;
select get_user from user_users;
update CB_SHIPBASEDINFO(表名) set ID(主键id) = get_user
where REGISTRATIONNUMBER(主键id) in (select REGISTRATIONNUMBER(主键id) from CB_SHIPBASEDINFO(表名));