`
calatustela
  • 浏览: 144076 次
  • 性别: Icon_minigender_1
  • 来自: 江苏●南通
社区版块
存档分类
最新评论

Spring 主键序列获取

阅读更多

根据不同的主键产生方式,可能需要配置表名、主键字段名或序列名等信息。下面,我们以Oracle和MySql为例分别讲解使用序列及表字段产生主 键值的方式。

  DataFieldMaxValueIncrementer接口定义了3个获取下一个主键值的方法:

  l int nextIntValue():获取下一个主键值,主键数据类型为int;

  l long nextLongValue():获取下一个主键值,主键数据类型为long;

  l String nextStringValue():获取下一个主键值,主键数据类型为String;

 

一般数据库都提供了自增键的功能,如MySql的auto_increment、SqlServerr的identity字段等。Spring允许你在应 用层产生主键值,为此定义了 org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer 接口,提供两种产生主键的方案:第一,通过序列产生主键;第二,通过表产生主键。

 

Oracle

 

<bean id="incre" class="org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer">

<property name="incrementerName" value="seq_post_id"/> ①指定序列名

<property name="dataSource" ref="dataSource"/> ②设置数据源

</bean>

 

MySQL

 

<bean id="incre"

class="org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer">

<property name="incrementerName" value="t_post_id"/> ①设置维护主键的表名

<property name="columnName" value="sequence_id"/>②用于生成主键值的列名

<property name="cacheSize" value="10"/> ③缓存大小

<property name="dataSource" ref="dataSource"/>

</bean>

分享到:
评论
2 楼 calatustela 2010-04-01  
举个例子:
在某一应用中需要生成顺序的序列号,序列号有日期+顺序号构成。
这种情况有两种方法做:
1、在数据库中建一个表存放顺序号,然后用存储过程每次取一下这个值,然后递增1保存;
2、利用数据库的sequence/或者自增加字段生成顺序号,这种情况下就可以利用DataFieldMaxValueIncrementer这个接口了。
1 楼 askyuan 2010-04-01  
这个在项目中怎么来使用呢?

相关推荐

    解决spring自增型主键问题

    本文将深入探讨如何在SQL Server 2008环境下解决自增型主键的问题,以及如何在Spring框架下进行有效的主键生成策略配置。 ### SQL Server 2008自增型主键问题 SQL Server 2008中的自增型主键,通常通过设置列属性...

    关系型数据库元数据获取工具db-meta.zip

    db-meta 是关系型数据库元数据获取工具,把数据库-&gt;schema-&gt;表-&gt;列,主键、外键、索引,触发器、存储过程、函数等抽象为对象,易于使用方便序列化。  1、 提供丰富的接口,能够获取常见的所有数据库元数据。...

    hibernate主键生成策略

    在SSH(Spring、Struts、Hibernate)架构中,Hibernate作为持久层框架,主键生成策略的正确选择对系统的稳定性和可扩展性有直接影响。 1. **assigned**策略: 这种策略要求开发者在调用`save()`方法之前手动设置主...

    Spring Data JPA Spring Data Commons

    - @SequenceGenerator:标注在主键属性上,用于设置序列生成器。 - @Length:标注在字符串类型的字段上,设置字段的最大长度。 - @NotEmpty:标注在字段上,确保字段不为null且长度不为零。 7. 示例解析: - 在...

    redis和spring整合

    如果你想利用Spring Data的Repository抽象,可以创建一个接口继承`RedisRepository`,并指定实体类和主键类型: ```java public interface MyRepository extends RedisRepository, String&gt; { } ``` 这样,你就...

    Spring Data JPA从入门到精通

    另外,`@GeneratedValue`用于指定主键生成策略,如自动增长、序列等。 事务管理是数据库操作的关键部分,Spring Data JPA与Spring的事务管理机制紧密结合。通过`@Transactional`注解,我们可以声明方法需要在事务...

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

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

    sql主键产生器

    6. **第三方库**:在编程语言层面,有许多库和框架提供了主键生成的功能,如Java的Hibernate或Spring框架,它们可以与数据库交互,自动处理主键生成。 使用"SQL主键产生器"工具的优点在于,它可以帮助开发者避免...

    spring-data-mongodb-1.8.0.RELEASE(含源码)

    - **MongoConverter**:源码中可以看到,MongoConverter 负责对象与 MongoDB 文档之间的转换,包括序列化和反序列化过程。 - **SimpleMongoRepository**:这是 Spring Data 默认实现的基础 Repository,其内部调用...

    MyBatis+Spring整合示例

    同时,为了实现主键自增,我们使用了Oracle数据库的序列(sequence)和触发器(trigger)机制。序列`pda2_user_sequence`用于生成主键值,触发器`id_auto_increment_triger`则在插入新记录时自动填充ID字段。 接着...

    Spring整合Redis

    你可以创建自己的Repository接口,扩展`RedisRepository`,然后通过注解`@RepositoryDefinition`定义实体类型和主键类型。 5. **RedisTemplate的使用** 在业务代码中,可以通过@Autowired注入`RedisTemplate`,...

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

    10. **序列(Sequence)**:Oracle中使用序列生成唯一ID,如USER_SEQ,这是主键ID的来源。 在实际开发中,为了确保项目的顺利进行,开发者需要熟悉这些技术的使用,同时关注版本兼容性问题,避免因版本过新或过旧...

    Spring Boot实例代码

    - JSON序列化与反序列化:Spring Boot默认集成了Jackson库,用于JSON数据的处理。`@ResponseBody`注解将方法返回值转换为HTTP响应体,而`@RequestBody`注解将请求体内容转换为方法参数。 - Swagger集成:为了方便...

    Struts2 Spring3 Hibernate3.3框架整合

    Struts2 Spring3 Hibernate3.3框架整合,增删改查,包含有数据库建表语句,包含有JAR包,包含有源代码。...使用的是Oracle的序列来提供的主键自增,建表和建立序列的sql语句,已经放在工程里面的WEBROOT目录下面了。

    复合主键@IdClass

    本文将详细探讨如何在SSH框架(Spring、Struts、Hibernate)中的实体类使用`@IdClass`注解来定义复合主键,并阐述其使用方法及注意事项。 #### 二、复合主键的定义与应用场景 复合主键是指由两个或两个以上的字段...

    主题:在Spring中结合Dbunit对Dao进行集成单元测试

    - 测试数据集中的主键应与实际数据库的主键生成策略一致,以避免冲突。 - 如果有复杂的数据关系,可能需要使用更复杂的Dbunit功能,如联合查询、序列化数据等。 通过以上步骤,我们可以有效地在Spring中结合...

    spring_mvc注解总结

    8. **@GeneratedValue**: 用于定义主键生成策略,例如序列、UUID、自增等。@SequenceGenerator配合使用,定义具体的序列生成器。 9. **@Column**: 用于指定实体属性与数据库表字段的映射关系,包括字段的长度、是否...

    SSH2+JSO与三表联合主外键

    通过使用JSON,可以高效地序列化和反序列化Java对象,使得数据在服务器和客户端之间轻松传递。在描述中提到的“SSH2+JSO”可能是指SSH2框架下,利用JSON对象进行数据通信的方法。 主键和外键是数据库设计中的关键...

    hibernateSynchronizer与spring集成

    其次,对于`&lt;generator class="sequence"/&gt;`,在某些数据库(如Oracle)中,我们通常使用序列作为主键生成策略。但在MySQL这样的数据库中,应将其更改为`identity`,因为MySQL使用自动增长的ID字段作为主键。这样,...

Global site tag (gtag.js) - Google Analytics