Oracle自动生成主键&&UUID

在使用Oracle的时候,需要添加一个唯一的主键,一般使用的是36位的唯一的字符串,我们有两种方式

 

转自: http://hbiao68.iteye.com/blog/1493759

一、使用数据库自动生成的方式,自动添加唯一的ID值

 

Sql代码   收藏代码
  1. create table t_log(  
  2.     ssid varchar2(36) default sys_guid() primary key,  
  3.     type varchar2(10),  
  4.     detail varchar2(100)  
  5. );  
  6.   
  7. default sys_guid()这个函数时Oracle自带的,在插入数据的时候不用插入该字段就会自动生成  
  8.   
  9. insert into t_log(type,detail)values('1','测试无主键');  

 

 

二、使用JAVA自动生成的UUID,作为数据库字段的主键

 

Java代码   收藏代码
  1. package demo.uuid;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5. import java.util.UUID;  
  6.   
  7. public class TestUUID {  
  8.   
  9.     public static void main(String[] args) {  
  10.         String uuid = UUID.randomUUID().toString();  
  11.         System.out.println(uuid.length());  
  12.         System.out.println(uuid.replace("-"""));  
  13.           
  14.         int num = str2Num("10000");  
  15.         System.out.println(num);  
  16.           
  17.         String date = transferToFormat("huangbia");  
  18.         System.out.println(date);  
  19.           
  20.         String nowDate = getCurrentDateStr(SDF_YYYY_MM_DD_HH_MM_SS_SS);  
  21.         System.out.println(nowDate);  
  22.     }  
  23.   
  24.     /** 
  25.      * 字符串转为数字,截取前面的0 
  26.      * @param str 
  27.      * @return 
  28.      */  
  29.     public static int str2Num(String str){  
  30.         char[] array = str.toCharArray();  
  31.         System.out.println(array);  
  32.         System.out.println(array.length);  
  33.         for(int i = 0; i < array.length; i++){  
  34.             System.out.println(array[i]);  
  35.             if(array[i] != '0'){  
  36.                 str = str.substring(i);  
  37.                 break;  
  38.             }  
  39.         }  
  40.         return Integer.parseInt(str);  
  41.     }  
  42.       
  43.     /** 
  44.      * 将字符串转换成2010-12-21格式的 
  45.      * @param propName 
  46.      * @return 
  47.      */  
  48.     public static String transferToFormat(String trDate)  
  49.     {  
  50.         StringBuffer busiDate = new StringBuffer();  
  51.         busiDate.append(trDate.substring(04));  
  52.         busiDate.append("-");  
  53.         busiDate.append(trDate.substring(46));  
  54.         busiDate.append("-");  
  55.         busiDate.append(trDate.substring(68));  
  56.         return busiDate.toString();  
  57.   
  58.     }  
  59.       
  60.     /** 
  61.      * SDF_YYYY_MM_DD_HH_MM_SS_SS格式 
  62.      */  
  63.     public static final SimpleDateFormat SDF_YYYY_MM_DD_HH_MM_SS_SS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");   
  64.       
  65.     /** 
  66.      * 获取当前日期的字符串形式 
  67.      * @param sdf 格式化器 
  68.      * @return 
  69.      */  
  70.     public static String getCurrentDateStr(SimpleDateFormat sdf){  
  71.         return sdf.format(new Date());  
  72.     }  
  73. }  

 

备注:上面的代码我相信大家都能看的明白,但是我这里想说明的是关于如何使用“工具类”。

 

对于定义属性(常用的变量)名称需要使用大写,使用的是static类型,这样就可以作为工具一样的去使用,例如工程的常用字符串、公共方法(跟业务没有什么关系)——例如得到系统时间,得到用户信息等等

你可能感兴趣的:(java基础,数据库)