`
calatustela
  • 浏览: 141573 次
  • 性别: 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  
这个在项目中怎么来使用呢?

相关推荐

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

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

    Struts2 Spring3 Hibernate3.3框架整合

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

    2023年最新java面试大全

    【01期】Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系? 【02期】你能说说Spring框架中Bean的生命周期吗? ...【18期】Java序列化与反序列化三连问:是什么?为什么要?如何做?

    quick.start:一个基于Java的快速开发框架,支持mysql,xml,json等的基本操作

    发布MySQL 5.1.26 Dom4j 1.6.1 杰克逊2.9.9 Lombok1.18.10 杰克1.8默认Mysql功能方法说明布尔has(可序列化ID)根据主键检查记录是否存在E findById(可序列化的ID)根据主键查找对象列出findByIds(Collection &lt;...

    java面试题

    Hibernate主键介绍 63 71.18.1. Assigned 63 71.18.2. Hilo 63 71.18.3. Increment 64 71.18.4. Identity 64 71.18.5. Sequence 64 71.18.6. Native 64 71.18.7. UUID 64 71.18.8. Foreign GUID 65 71.19. ...

    Mybatis plus增强工具包-其他

    获取 lambda 信息不在序列化 合并 gitee pulls/ 141 fixed github issues/3208 3016 fixed github issues/3482 数据权限处理器支持 union all 调整事务未启用打印提示信息 单元测试优化相关依赖升级

    Java面试宝典2020修订版V1.0.1.doc

    11、什么是java序列化,如何实现java序列化? 59 12、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 60 13、java中有几种类型的流?JDK为每种类型的流...

    FlashCards:电子抽认卡网络应用程序

    #抽认卡应用程序 一个电子抽认卡网络应用程序。 目前,许多抽认卡网站为额外功能收费,例如:文本格式、图片、视频、音频等。该项目的目标是为这些网站提供... 创建表用户(id 序列主键,用户名 varchar(20)不为空,

    Java学习笔记-个人整理的

    {7.4}基本类型数据序列化}{108}{section.7.4} {7.5}String的序列化}{109}{section.7.5} {7.6}InputStream与OutputStream}{109}{section.7.6} {7.6.1}FileInputStream}{109}{subsection.7.6.1} {7.6.2}...

    从J2SE到J2EE知识点介绍

    (八) 复合自然主键实例(源代码hibernate_0500) 218 (九) Hibernate的类型 224 1. Java基本值类型的Hibernate映射 224 2. Java时间和日期类型的Hibernate映射类型 224 3. Java大对象类型的Hibernate映射类型 225 4....

    asp.net知识库

    通过DataTable获得表的主键 ADO.NET 2.0 操作实例 ADO.NET 2.0 大批量数据操作和多个动态的结果集 ADO.NET 2.0 异步处理 在ASP.NET中使用WINDOWS验证方式连接SQL SERVER数据库 改进ADO.Net数据库访问方式 ASP.NET ...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

Global site tag (gtag.js) - Google Analytics