上学的时候给一个公司做网站,碰到过一个小问题:如何获得刚刚插入记录的自动生成的主键。
比如我要生成一个订单,那么需要往两张表插入记录:“订单表”和“商品项目表”(“商品项目表”以“订单表”的主键作为外键)。
当时我的做法非常的笨拙,插入记录后,根据多个条件将该记录的主键查询出来,呵呵;
后来为了避免这个问题,我就先把这个主键得到然后再进行插入,反正都够笨的。
我当时学习jdbc的时候看的 JDBC Database Programming with J2EE 这本书,当时我觉得够全的了,上面都没讲如何获得新纪录的自动生成主键,网上也没搜到,我以为就没办法了,前段时间写jdbc课件看api文档时才发现有相关支持,特发表此文,给刚入门的同学提个醒。
我们需要用到下面两个方法:
Connection接口定义的方法
PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
创建一个默认 PreparedStatement 对象,该对象能获取自动生成的键。
Statement接口定义的方法
ResultSet getGeneratedKeys()
获取由于执行此 Statement 对象而创建的所有自动生成的键。
以下表为例:
CREATE TABLE userinfo(
id int IDENTITY(1,1) PRIMARY KEY NOT NULL,
name varchar(50) NULL
)
java代码实现:
String sql = "insert into userinfo values ('张三')";
PreparedStatement stmt = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
stmt.executeUpdate();
ResultSet rs = stmt.getGeneratedKeys();
int newid = 0;
if(rs.next()) newid = rs.getInt(1);
分享到:
相关推荐
对于具有自增主键的表,MySQL会自动为新插入的记录生成主键值。为了获取这个值,我们需要在插入语句中使用`LAST_INSERT_ID()`函数,并在`Statement`对象上设置`RETURN_GENERATED_KEYS`属性: ```java try ...
本文将重点讲解如何使用JDBC保存一个Java对象到数据库,并获取插入后自动生成的主键值。 #### 二、关键概念 1. **PreparedStatement**:预编译的SQL语句,它可以提高执行效率,并有助于防止SQL注入攻击。 2. **...
在Ibatis中,只需在Mapper XML文件中的`<insert>`标签中设置`useGeneratedKeys="true"`和`keyProperty="id"`,就可以让数据库自动生成主键。 4. **雪花算法(Snowflake Algorithm)**: 在分布式环境下,为了保证...
接着,定义需要生成代码的表,可以指定表名、是否生成主键字段、是否去除表前缀等。此外,还可以设置生成的代码风格,如实体类的命名规则、字段注释的生成方式等。 然后,Generator会根据配置文件中的信息,读取...
本主题主要讲解如何利用工具或自定义脚本将MySQL数据表自动生成对应的Java实体类,提高开发效率。 首先,我们需要理解Java实体类的基本概念。在Java世界中,实体类通常用于ORM(对象关系映射)框架,如Hibernate或...
`GenerationType.IDENTITY`意味着主键值由数据库自动生成,比如在MySQL中,这通常对应于`AUTO_INCREMENT`。 **JPA主键生成策略** JPA提供了多种主键生成策略,以下是一些常见的策略: 1. **IDENTITY**:数据库...
例如,可以通过@Entity注解标记实体类,@Id注解标识主键,@GeneratedValue注解自动生成主键,@ManyToOne或@OneToMany注解处理一对多或多对一的关系。 通过以上步骤,我们成功地在MyEclipse中利用Hibernate3自动生成...
"Hibernate自动生成持久化类和映射文件"这个话题主要涉及如何利用myEclipse这款集成开发环境的反向工程功能,快速地根据数据库中的表结构生成对应的Hibernate配置文件、映射文件以及持久化类。下面将详细介绍这一...
在"mybatis自动生成实例支持oracle和MySQL"的场景中,我们可以理解为该压缩包包含了一个能够帮助开发者自动生成针对Oracle和MySQL数据库的相关代码的工具或教程。 1. **MyBatis自动化工具**: MyBatis Generator ...
"Java自动生成Mysql数据库结构"这个主题,就是关于如何利用编程语言自动化处理数据库设计的一部分。这个功能可以帮助开发者快速地创建数据库文档,减少手动编写SQL脚本和设计模式的时间。 首先,我们要理解这个代码...
因此,"java自动生成model和mapper的工具"应运而生,旨在提高开发效率,减少重复劳动。 该工具的核心功能是解析数据库表结构,并自动生成对应的Java Model类和Mapper接口。在使用过程中,开发者首先需要配置数据库...
MyBatis代码自动生成器是一款高效实用的工具,旨在帮助开发者快速生成MyBatis相关的Java代码,包括DAO层、Service层、Mapper接口以及XML配置文件等。它极大地提高了开发效率,减少了手动编写重复代码的工作量,使...
**MyBatis Generator** 是MyBatis框架的一部分,它是一个代码生成工具,可以自动生成Java实体类、Mapper接口和XML配置文件。通过配置XML文件,MBG可以根据数据库表的信息自动生产相应的Java源代码,这样我们就无需...
Mybatis Generator是一款强大的工具,它能够自动生成Mybatis的映射文件、实体类以及DAO接口,极大地提高了开发效率。在Java开发中,Mybatis Generator基于XML配置文件,通过解析数据库表结构,能够自动创建与数据库...
Mybatis-Generator是一款强大的自动化工具,它可以帮助Java开发者自动生成Mybatis的相关代码,包括DAO(Data Access Object)、Model以及Mapper XML映射文件。这极大地提高了开发效率,避免了手动编写这些重复性工作...
MyBatis Generator(MBG)是MyBatis框架的一个实用工具,它允许用户自动生成Java持久层代码,包括DAO、模型类以及Mapper XML文件。在本例子中,我们使用的是`mybatis-generator-core-1.3.2-sources.jar`,这是一个...
MyBatis Generator(MBG)是一款强大的自动化代码生成工具,它可以极大地提高开发效率,通过配置文件自动生成MyBatis框架所需的Mapper接口、Mapper XML文件、Entity实体类、Service接口及其实现类等代码。...
在IT行业中,代码自动生成是一种提高开发效率的重要技术。标题中的“代码自动生成_连接数据库生成entity(可自定义)_mysql”指的是一个自动化工具或框架,它能够帮助开发者从数据库结构自动生成对应的实体(Entity)...
本文将深入探讨Hibernate如何自动生成数据库文件,以及相关知识点。 首先,Hibernate的核心概念是对象关系映射(ORM),它通过元数据(如XML配置文件或注解)将Java类与数据库表进行绑定。当需要自动生成数据库文件...