在使用Oracle的时候,需要添加一个唯一的主键,一般使用的是36位的唯一的字符串,我们有两种方式
转自: http://hbiao68.iteye.com/blog/1493759
一、使用数据库自动生成的方式,自动添加唯一的ID值
- create table t_log(
- ssid varchar2(36) default sys_guid() primary key,
- type varchar2(10),
- detail varchar2(100)
- );
- default sys_guid()这个函数时Oracle自带的,在插入数据的时候不用插入该字段就会自动生成
- insert into t_log(type,detail)values('1','测试无主键');
二、使用JAVA自动生成的UUID,作为数据库字段的主键
- package demo.uuid;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.UUID;
- public class TestUUID {
- public static void main(String[] args) {
- String uuid = UUID.randomUUID().toString();
- System.out.println(uuid.length());
- System.out.println(uuid.replace("-", ""));
- int num = str2Num("10000");
- System.out.println(num);
- String date = transferToFormat("huangbia");
- System.out.println(date);
- String nowDate = getCurrentDateStr(SDF_YYYY_MM_DD_HH_MM_SS_SS);
- System.out.println(nowDate);
- }
- /**
- * 字符串转为数字,截取前面的0
- * @param str
- * @return
- */
- public static int str2Num(String str){
- char[] array = str.toCharArray();
- System.out.println(array);
- System.out.println(array.length);
- for(int i = 0; i < array.length; i++){
- System.out.println(array[i]);
- if(array[i] != '0'){
- str = str.substring(i);
- break;
- }
- }
- return Integer.parseInt(str);
- }
- /**
- * 将字符串转换成2010-12-21格式的
- * @param propName
- * @return
- */
- public static String transferToFormat(String trDate)
- {
- StringBuffer busiDate = new StringBuffer();
- busiDate.append(trDate.substring(0, 4));
- busiDate.append("-");
- busiDate.append(trDate.substring(4, 6));
- busiDate.append("-");
- busiDate.append(trDate.substring(6, 8));
- return busiDate.toString();
- }
- /**
- * SDF_YYYY_MM_DD_HH_MM_SS_SS格式
- */
- public static final SimpleDateFormat SDF_YYYY_MM_DD_HH_MM_SS_SS = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
- /**
- * 获取当前日期的字符串形式
- * @param sdf 格式化器
- * @return
- */
- public static String getCurrentDateStr(SimpleDateFormat sdf){
- return sdf.format(new Date());
- }
- }
备注:上面的代码我相信大家都能看的明白,但是我这里想说明的是关于如何使用“工具类”。
对于定义属性(常用的变量)名称需要使用大写,使用的是static类型,这样就可以作为工具一样的去使用,例如工程的常用字符串、公共方法(跟业务没有什么关系)——例如得到系统时间,得到用户信息等等
相关推荐
Hibernate作为一款流行的Java持久层框架,提供了多种自动生成主键的方法,以适应不同场景的需求。本文将深入探讨Hibernate中自动生成主键的几种常见策略及其应用场景。 ### 1. UUID.hex UUID(Universally Unique ...
主键值由数据库自动生成并返回给应用程序。 3. **`GenerationType.SEQUENCE`**:适用于支持序列的数据库,如Oracle。需要预先定义一个序列对象,然后由JPA在插入新记录时使用。 4. **`GenerationType.TABLE`**:...
在Ibatis中,只需在Mapper XML文件中的`<insert>`标签中设置`useGeneratedKeys="true"`和`keyProperty="id"`,就可以让数据库自动生成主键。 4. **雪花算法(Snowflake Algorithm)**: 在分布式环境下,为了保证...
序列在Oracle中用于生成唯一的整数,通常作为主键的值。例如,创建两个序列`U_seq`和`U_order`: ```sql CREATE SEQUENCE U_seq MINVALUE 1 MAXVALUE 10000 START WITH 1 INCREMENT BY 1 CACHE 20; CREATE ...
- **描述**:使用 hilo 算法生成主键,该算法需要在数据库中维护一个额外的表来存储主键信息。 - **优点**:支持高并发,性能良好。 - **缺点**:需要额外维护一个表。 - **应用场景**:适用于对主键性能有较高...
- 自动生成的 UUID 是全球唯一的。 - 通常用于分布式系统或跨数据库的应用场景。 ##### 9. **UUID.String** - **简介**:`uuid.string` 策略生成一个 16 位的字符串表示的唯一标识符。 - **应用场景**:与 `uuid...
而Hibernate提供了跨数据库的主键生成策略,例如`native`策略,它会根据底层数据库自动选择合适的主键生成方式(如MySQL的自动增长ID或Oracle的序列)。 在JPA中,通过`@GenericGenerator`注解可以定义主键的生成...
在Java的持久化框架Hibernate中,主键生成策略是一个至关重要的概念,它决定了数据库表中主键值如何自动生成。主键通常是表中唯一标识记录的一列,对于数据的完整性和一致性至关重要。以下是对Hibernate中主键生成...
- **应用场景**:适用于大多数现代关系型数据库,这些数据库通常提供了内置的自动增长字段功能,可以高效地生成主键。 ##### 6. sequence - **定义**:采用数据库提供的 sequence 机制生成主键,如 Oracle 中的 ...
在Java的持久化框架Hibernate中,主键的生成策略是一个重要的概念,它涉及到数据库表记录的唯一标识如何自动生成。本篇文章将详细讲解Hibernate映射文件中关于主键生成的各种策略及其配置,帮助开发者更好地理解和...
这里的`AUTO_INCREMENT`关键字指示MySQL为`id`列自动生成唯一且递增的值,从1开始。每次插入新行时,MySQL会自动为`id`列分配下一个可用的值。`AUTO_INCREMENT`的初始值可以调整,以满足特定需求。 相比之下,...
- **描述**:使用“高/低”算法,通过在数据库中维护一个额外的表来生成主键,该表包含两个值:当前高值和剩余可用低值的数量。 - **应用场景**:适用于高性能的并发环境,因为它可以减少数据库的访问频率。 #### 7...
这个压缩包"自动生成编号,Delphi+数据库.rar"显然与使用Delphi编程语言和数据库系统来实现这一功能有关。Delphi是一款强大的集成开发环境(IDE),以其高效的编译器和面向对象的 Pascal 语言闻名,常用于开发桌面...
在一些情况下,我们可能需要自动生成主键,以确保其唯一性和顺序性。"SQL主键产生器"就是这样一个工具,它能帮助我们在创建或更新表时自动为主键字段生成唯一值。 SQL主键产生器通常有以下几种实现方式: 1. **...
2. **SEQUENCE**:使用数据库序列生成主键,适用于支持序列的数据库,如Oracle。 3. **TABLE**:通过数据库表生成主键,适用于不支持序列的数据库,如MySQL。 4. **UUID**:生成全局唯一的UUID字符串作为主键。 5. *...
increment策略由Hibernate在内存中生成主键,每次递增1。它不依赖于数据库的序列或自增功能,因此可以跨数据库使用。然而,由于它是基于Java的同步机制,当多个JVM并发访问时可能会出现主键冲突。所以,它适用于单...
UUID主键生成策略是使用Universally Unique Identifier生成主键。这种策略可以生成唯一的主键,但它有一个缺点,即生成的主键可能很长,影响数据库的性能。 在选择主键生成策略时,需要根据项目的需求和数据库的...