当向数据库插入一条新记录后通常都需要获取新记录的主键.
而每种数据库的主键生成策略都不同.
一般来讲, 如果让数据库来维护主键, MySQL 和 SQL Server 为自动增长, Oracle 使用序列
若使用 Hibernate , 其 save() 方法会返回一个 Serializable. 此值为 持久化标识(identifier) 即主键对应的属性.
merge() 方法将 持久化的对象 整个返回.
若使用 jdbc , 可以使用 Statement 的 getGeneratedKeys() 方法获取最新插入数据的结果集.
但要保证一点, 必须与 insert 语句在同一个 Connection 中. 具体情况查看 Statement API 帮助的 executeUpdate(sql, Statement.RETURN_GENERATED_KEYS) 和 getGeneratedKeys() 方法说明;
若数据库驱动程序不支持上面的方法. 那就只能使用数据库本身的方法了
统计了一下:
Oracle SELECT sequence.currval FROM DUAL
MySQL SELECT LAST_INSERT_ID()
SqlServer SELECT SCOPE_IDENTITY()或SELECT @@IDENTITY
PostgreSQL SELECT nextval('<TABLE>_SEQ')
DB2 IDENTITY_VAL_LOCAL()
Informix SELECT dbinfo('sqlca.sqlerrd1') FROM <TABLE>
Sybase SELECT @@IDENTITY
HsqlDB CALL IDENTITY()
Cloudscape IDENTITY_VAL_LOCAL()
Derby IDENTITY_VAL_LOCAL()
使用以上语句查询时, 必须保证与 插入语句在同一个 Connection 中
分享到:
相关推荐
总的来说,Java中的JDBC提供了一种灵活且强大的方式来处理数据库操作,包括插入记录并获取自增主键。正确地使用预编译的`PreparedStatement`可以提高代码的可读性和安全性,同时,通过设置`RETURN_GENERATED_KEYS`...
总结起来,通过在MyBatis的Mapper XML文件中配置`useGeneratedKeys`和`keyProperty`,或者使用`<selectKey>`标签,我们可以轻松地在Java应用中获取MySQL插入记录时自动生成的主键值。这种方式不仅简化了编程,也提高...
在MyBatis这个流行的Java持久层框架中,处理自增主键的值通常涉及到插入数据后如何获取新生成的ID。下面将详细阐述MyBatis如何实现这一功能。 1. **自增主键的原理**: 自增主键通常在关系型数据库如MySQL、...
在SQL Server中,获取插入记录后的ID(通常指的是自动编号字段的值)是常见的操作,尤其是在需要关联新插入数据与其他表记录的情况下。本篇文章主要介绍了几种在SQL Server中获取自增ID的方法,针对SQL Server 2000...
总之,通过MyBatis的`useGeneratedKeys`和`keyProperty`特性,我们可以方便地在插入记录后获取自增长字段的值,从而简化了数据库操作的复杂性,提高了代码的可读性和可维护性。在实际开发中,根据具体需求,还可以...
在本篇文章中,我们将深入探讨如何在C# WinForm应用程序中获取新插入记录的标识号,这在跟踪和管理数据时非常关键。 在关系型数据库系统中,每条记录通常都有一个唯一的标识符,被称为主键或自动增长字段。在SQL ...
在MySQL数据库中,自增主键通常用于标识每条记录的独特性,而在插入新记录后,数据库会自动为这条记录分配一个唯一的主键值。MyBatis提供了方便的方法来获取这个插入后的主键ID,下面我们将详细讲解如何实现这一功能...
Mybatis 插入一条或批量插入 返回带有自增长主键记录的实例 Mybatis 是一个基于 Java 的持久层框架,它提供了对数据库的访问和操作的功能。今天,我们将分享一个关于 Mybatis 插入一条或批量插入 返回带有自增长...
当使用DataAdapter填充DataSet或DataTable时,可以设置`AcceptChangesDuringFill`属性为`false`,然后在插入新记录后调用`GetChanges`,这将返回一个只包含新插入记录的DataTable,从中获取新ID。 7. **存储过程**...
4. **通过Java程序使用JDBC获取刚插入记录的ID** #### 一、理解自动增长ID的工作原理 在MySQL中,通过设置字段为`AUTO_INCREMENT`属性来实现自动增长的ID。当向表中插入新记录时,如果该记录的ID字段未指定值,则...
一、获取新添加记录主键字段值 在MyBatis中,添加操作返回的是记录数并非记录主键id。如果需要获取新添加记录的主键值,需要在执行添加操作之后,直接读取Java对象的主键属性。例如: ```java Integer rows = ...
AUTO_INCREMENT 策略可能导致额外的网络通信开销,因为每个新插入的记录都需要获取下一个主键值。为了提高性能,可以考虑使用 SEQUENCE 策略,预先批量获取一批主键,然后在本地缓存并分配给多条记录。 7. 监控与...
在某些数据库中,如MySQL,可以使用`LAST_INSERT_ID()`函数来获取最近插入记录的自增主键值。但这种方式并不适用于所有数据库,因此MyBatis提供了更通用的解决方案,即通过JDBC的`Statement.getGeneratedKeys()`方法...
在Mybatis中,当执行插入操作时,有时我们需要获取新插入记录的主键ID,以便进行后续的操作。Mybatis提供了一种便捷的方式,允许我们在插入数据后返回自动生成的主键值。以下将详细介绍如何在Mybatis中实现这一功能...
在Java编程中,当我们使用Java Database Connectivity (JDBC) API来执行插入操作时,有时我们需要获取新插入记录的自增主键值。标题"java使用jdbc插入信息时获取id1"指的是在Java程序中,通过JDBC执行SQL插入语句后...
`<selectKey>`标签定义了一个SQL查询,用于获取新插入记录的主键。在本例中,`SELECT LAST_INSERT_ID()`是MySQL获取最后插入记录自增ID的语法。`order="AFTER"`表示先执行插入语句,然后执行查询。配置如下: ```...
在本例中,我们关注的是如何在SQL中获取刚插入记录的自动增长列(通常是主键)的值。我们将探讨SQL Server 2000和SQL Server 2005及以上版本的不同处理方式,以及如何在C#环境中使用这些方法。 首先,我们创建了一...
在 MyBatis 框架中,当我们执行一个插入(insert)操作时,有时需要获取新插入记录的自增主键值,例如数据库中的唯一标识 ID。MyBatis 提供了方便的功能来实现这一需求,这主要涉及到 `keyProperty` 和 `...
在实际操作中,为了实现数据增量迁移,我们首先需要设置一个“获取最新时间戳”的步骤,以便确定上次迁移后数据库中发生的变更。然后,我们可以使用“表输入”组件从源数据库读取这些变更数据,并利用“过滤行”组件...
MyBatis获取插入记录的自增长字段值(ID)详解 在MyBatis中,获取插入记录的自增长字段值是一个常见的问题,特别是在使用自动增长字段的数据库管理系统中。下面,我们将详细介绍MyBatis获取插入记录的自增长字段值的...