字节流的博客

获取 JDBC 插入数据主键

1. 获取主键

在 Hibernate 中,当我们插入新的数据时,比如插入一个新的对象,当插入完成后,改对象就会由瞬时态转换为持久态,此时我们可以轻松地从此对象获取到新插入数据的主键 id

其实,在 JDBC 中,我们也可以轻松获取的到,但是需要在 Statement 执行 execute 方法时,需要加一个参数:Statement.RETURN_GENERATED_KEYS,这样,Statement 在执行完毕后会返回一个主键结果集,我们遍历结果集就可以获取到我们插入数据的主键 id,部分代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
Class.forName(DRIVER);
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/java_demo", USER, PASS);

// 插入两条数据
String sql = "INSERT INTO usr(name) values('smoker'),('blog')";
Statement statement = connection.createStatement();
statement.execute(sql, Statement.RETURN_GENERATED_KEYS);
ResultSet rs = statement.getGeneratedKeys();

// 遍历结果集,打印主键
while (rs.next()) {
System.out.println(rs.getLong(1));
}

运行结果如下

1
2
7
8

Thanks! 😊