`
chxiaowu
  • 浏览: 239981 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Spring JDBC两种获取Oracle Sequence的方法

 
阅读更多

http://www.blogjava.net/ahgf/archive/2005/10/14/15505.html

 

前提:

CREATE TABLE Booking (
  id INTEGER NOT NULL,
  date_made DATE,
  reserved_until TIMESTAMP,
  price DECIMAL(15, 2) NOT NULL,
  Purchase_id INTEGER,
  PRIMARY KEY(id))  
create sequence booking_seq 
  start with 1 
  increment by 1 
  nomaxvalue;

方法一:
利用Spring的org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer

OracleSequenceMaxValueIncrementer incr = 
    new OracleSequenceMaxValueIncrementer(dataSource, "booking_seq");
   
public int getNewBookingId() {
  return incr.nextIntValue();
}

针对不同的数据库Spring提供了不同的支持类。

方法二:使用数据库本身的触发器

CREATE OR REPLACE TRIGGER tib_booking BEFORE INSERT
ON BOOKING FOR EACH ROW
DECLARE
    integrity_error  EXCEPTION;
    errno            INTEGER;
    errmsg           CHAR(200);
    dummy            INTEGER;
    FOUND            BOOLEAN;
BEGIN
    --  Column "ID" uses sequence booking_seq 
    SELECT booking_seq.NEXTVAL INTO :NEW.ID FROM dual;
--  Errors handling
EXCEPTION
    WHEN integrity_error THEN
       RAISE_APPLICATION_ERROR(errno, errmsg);
END;

测试:
INSERT INTO BOOKING(date_made,price) VALUES(SYSDATE,22222);
COMMIT;
分享到:
评论

相关推荐

    Struts2.3.6+hibernate4.3.5+Spring 4.0.5+oracle 10g的集成

    这个项目是关于将Struts2.3.6、Hibernate4.3.5、Spring 4.0.5框架与Oracle 10g数据库集成的一个实例。这个集成过程涉及到多个步骤,包括配置校验、国际化、数据导出到Excel,以及实现用户管理功能如添加、修改、删除...

    java之hibernate和spring技术难点及其要点总结

    7. **使用Oracle sequence**:在Oracle数据库环境下,使用sequence作为主键生成策略是一种常见的做法。 8. **异常处理**:如`java.net.SocketException`等异常的处理,这对于确保应用程序的健壮性和稳定性非常重要...

    spring-boot-mybatis-plus数据层框架

    - **主键自动生成**:支持4种主键策略,包括分布式唯一ID生成器(Sequence),可根据实际需求自由配置。 - **内置代码生成器**:通过命令行或Maven插件快速生成Mapper、Model、Service和Controller层代码,支持模板...

    sequence:从数据库生成序列 ID

    以Oracle为例,其`CREATE SEQUENCE`语句可以创建一个序列对象,每次调用`NEXTVAL`或`CURRVAL`函数时,序列就会自增并返回新的值。例如: ```sql CREATE SEQUENCE my_sequence START WITH 1 INCREMENT BY 1; ``` 在...

    spring-framework-reference-4.1.2

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

    mybatis-3.2.7 EHCache2.6.8 oracle 及 测试用例

    它消除了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 ...

    repid-framework 使用说明.docx

    - Spring_jdbc:根据策略类型修改 `DAO` 文件中的 `save()` 方法,例如针对 Oracle 的 `sequence`。 9. **特殊主键策略**: - 对于序列(sequence)主键,需要修改生成的 DAO 文件中的保存方法,例如:`...

    java面试题

    73.8. transaction有那几种实现(事务处理)(Spring) 79 73.9. Spring IoC 79 73.10. Spring AOP面向方面编程 82 74. 项目中为什么使用SSH 85 75. Spring在SSH中的作用 86 76. weblogic 86 76.1. 如何给weblogic指定...

    ssh高版本整合

    在SSH整合中,Spring可以作为服务层和控制层的粘合剂,通过AOP(面向切面编程)实现事务管理,同时也可以提供数据源配置、JDBC模板、DAO支持等功能。对于Oracle 11g数据库的连接,Spring配置文件中需要定义数据源,...

    J2EE期中考试卷子

    12. 主键生成策略:在SQLServer数据库中,native、hilo、identity可以作为主键生成策略,但sequence不适用,因为它依赖于支持序列的数据库,如Oracle。 13. Spring配置文件:Spring的核心配置文件通常为...

    spring-framework-reference4.1.4

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

    精心整理的ssh2 一些错误问题的记录(推荐)

    例如,当一个方法期望接收三个位置参数,而实际上只传递了一个或两个参数时,就会抛出此类异常。解决这个问题的方法是检查调用语句,确保传入的参数数量与方法定义中所要求的数量一致。 ### 错误二:org.hibernate....

    J2EE课程总结

    - **概述数据模型**:数据模型是描述数据的结构、关系以及操作规则的一种方法,常见的有ER模型等。 - **数据库设计**:包括需求分析、概念设计、逻辑设计和物理设计等多个阶段。 **3. 创建表** - 使用`CREATE TABLE...

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

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

    圣思园Java.docx

    - **Ant与Maven**:对比两种构建工具的特点与应用场景。 - **Log4J**:介绍日志框架的配置与使用。 #### 工作流与全文检索 - **工作流**:工作流管理系统的基本概念与原理。 - **全文检索**:使用Lucene进行文本...

    Hibernate框架讲义.pdf

    - JDBC是一种Java API,可以连接和执行查询数据库的操作。 - JDBC驱动用于连接数据库,Hibernate在底层使用JDBC与数据库交互。 2. JavaDAO(Data Access Object): - DAO模式是一种用于访问数据库的编程模式。 ...

    Java学习笔记-个人整理的

    {8.3}创建线程的两种方法}{123}{section.8.3} {8.4}Runnable}{123}{section.8.4} {8.5}Sleep阻塞与打断唤醒}{124}{section.8.5} {8.5.1}sleep与wait的差异}{124}{subsection.8.5.1} {8.6}IO阻塞}{126}{section....

    11-Java软件工程师面试题.doc

    Oracle数据库中,自动序列通常通过`CREATE SEQUENCE`语句来创建。序列对象可以生成唯一的整数,用于主键或其他需要唯一值的字段。例如: ```sql CREATE SEQUENCE seq_name START WITH 1 INCREMENT BY 1; ``` ...

    Java开发工程师试卷四(~).doc

    `identity`适用于支持自动增长字段的数据库(如SQL Server),`sequence`适用于支持序列的数据库(如Oracle),`native`则根据数据库类型选择合适的策略。 5. **Oracle字符串连接**:在Oracle SQL中,连接字符串的...

Global site tag (gtag.js) - Google Analytics