package org.nhooo.example.jdbc; import java.sql.*; public class GetGeneratedKeyExample { private static final String URL = "jdbc:mysql://localhost/nhooo"; private static final String USERNAME = "root"; private static final String PASSWORD = ""; public static void main(String[] args) { try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD)) { // 订单表有一个ID列,其值将是auto //由数据库生成。插入新记录时,新的ID // 对于主键将生成,我们将获得 //生成的密钥,因此我们可以在其他过程中使用它。对于 // 实例,如果我们有一个主明细表,其中的明细 // 该表需要来自主表的ID。 String sql = "INSERT INTO orders (username, order_date) " + "VALUES ('foobar', '2018-11-12')"; Statement stmt = connection.createStatement(); // 执行语句时,我们可以传递 // Statement.RETURN_GENERATED_KEYS,以便我们稍后提取 // 由返回的结果集对象生成的键 // 这种方法。 stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); ResultSet keys = stmt.getGeneratedKeys(); int lastKey = 1; while (keys.next()) { lastKey = keys.getInt(1); } System.out.println("Last Key: " + lastKey); } catch (SQLException e) { e.printStackTrace(); } } }
orders表的结构。
CREATE TABLE `orders` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `order_date` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency>