`

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类型,这样就可以作为工具一样的去使用,例如工程的常用字符串、公共方法(跟业务没有什么关系)——例如得到系统时间,得到用户信息等等

分享到:
评论

相关推荐

    hibernate中自动生成主键的办法

    Hibernate作为一款流行的Java持久层框架,提供了多种自动生成主键的方法,以适应不同场景的需求。本文将深入探讨Hibernate中自动生成主键的几种常见策略及其应用场景。 ### 1. UUID.hex UUID(Universally Unique ...

    持久化类主键生成策略+例子

    主键值由数据库自动生成并返回给应用程序。 3. **`GenerationType.SEQUENCE`**:适用于支持序列的数据库,如Oracle。需要预先定义一个序列对象,然后由JPA在插入新记录时使用。 4. **`GenerationType.TABLE`**:...

    08_ibatis教程_sql主键生成方式.rar

    在Ibatis中,只需在Mapper XML文件中的`&lt;insert&gt;`标签中设置`useGeneratedKeys="true"`和`keyProperty="id"`,就可以让数据库自动生成主键。 4. **雪花算法(Snowflake Algorithm)**: 在分布式环境下,为了保证...

    oracle_创建表空间、表、主键、外键、序列.docx

    序列在Oracle中用于生成唯一的整数,通常作为主键的值。例如,创建两个序列`U_seq`和`U_order`: ```sql CREATE SEQUENCE U_seq MINVALUE 1 MAXVALUE 10000 START WITH 1 INCREMENT BY 1 CACHE 20; CREATE ...

    Hibernate主键生成策略

    - **描述**:使用 hilo 算法生成主键,该算法需要在数据库中维护一个额外的表来存储主键信息。 - **优点**:支持高并发,性能良好。 - **缺点**:需要额外维护一个表。 - **应用场景**:适用于对主键性能有较高...

    hibernate主键生成策略

    - 自动生成的 UUID 是全球唯一的。 - 通常用于分布式系统或跨数据库的应用场景。 ##### 9. **UUID.String** - **简介**:`uuid.string` 策略生成一个 16 位的字符串表示的唯一标识符。 - **应用场景**:与 `uuid...

    真实项目中关于主键生成方式的剖析(JPA)

    而Hibernate提供了跨数据库的主键生成策略,例如`native`策略,它会根据底层数据库自动选择合适的主键生成方式(如MySQL的自动增长ID或Oracle的序列)。 在JPA中,通过`@GenericGenerator`注解可以定义主键的生成...

    Hibernate中主键生成策略

    在Java的持久化框架Hibernate中,主键生成策略是一个至关重要的概念,它决定了数据库表中主键值如何自动生成。主键通常是表中唯一标识记录的一列,对于数据的完整性和一致性至关重要。以下是对Hibernate中主键生成...

    Hibernate主键生成方式

    - **应用场景**:适用于大多数现代关系型数据库,这些数据库通常提供了内置的自动增长字段功能,可以高效地生成主键。 ##### 6. sequence - **定义**:采用数据库提供的 sequence 机制生成主键,如 Oracle 中的 ...

    Hibernate映射文件主键的生成

    在Java的持久化框架Hibernate中,主键的生成策略是一个重要的概念,它涉及到数据库表记录的唯一标识如何自动生成。本篇文章将详细讲解Hibernate映射文件中关于主键生成的各种策略及其配置,帮助开发者更好地理解和...

    Oracle与Mysql自动增长列(id)的区别

    这里的`AUTO_INCREMENT`关键字指示MySQL为`id`列自动生成唯一且递增的值,从1开始。每次插入新行时,MySQL会自动为`id`列分配下一个可用的值。`AUTO_INCREMENT`的初始值可以调整,以满足特定需求。 相比之下,...

    hibernate 主键生成策略

    - **描述**:使用“高/低”算法,通过在数据库中维护一个额外的表来生成主键,该表包含两个值:当前高值和剩余可用低值的数量。 - **应用场景**:适用于高性能的并发环境,因为它可以减少数据库的访问频率。 #### 7...

    自动生成编号,Delphi+数据库..rar

    这个压缩包"自动生成编号,Delphi+数据库.rar"显然与使用Delphi编程语言和数据库系统来实现这一功能有关。Delphi是一款强大的集成开发环境(IDE),以其高效的编译器和面向对象的 Pascal 语言闻名,常用于开发桌面...

    sql主键产生器

    在一些情况下,我们可能需要自动生成主键,以确保其唯一性和顺序性。"SQL主键产生器"就是这样一个工具,它能帮助我们在创建或更新表时自动为主键字段生成唯一值。 SQL主键产生器通常有以下几种实现方式: 1. **...

    JPA环境搭建及JPA实例与JPA主键生成策略

    2. **SEQUENCE**:使用数据库序列生成主键,适用于支持序列的数据库,如Oracle。 3. **TABLE**:通过数据库表生成主键,适用于不支持序列的数据库,如MySQL。 4. **UUID**:生成全局唯一的UUID字符串作为主键。 5. *...

    hibernate的主键生成策略

    increment策略由Hibernate在内存中生成主键,每次递增1。它不依赖于数据库的序列或自增功能,因此可以跨数据库使用。然而,由于它是基于Java的同步机制,当多个JVM并发访问时可能会出现主键冲突。所以,它适用于单...

    Java探索之Hibernate主键生成策略详细介绍

    UUID主键生成策略是使用Universally Unique Identifier生成主键。这种策略可以生成唯一的主键,但它有一个缺点,即生成的主键可能很长,影响数据库的性能。 在选择主键生成策略时,需要根据项目的需求和数据库的...

Global site tag (gtag.js) - Google Analytics