在 Hibernate 中,当我们插入新的数据时,比如插入一个新的对象,当插入完成后,改对象就会由 瞬时态 转换为 持久态 ,此时我们可以轻松地从此对象获取到新插入数据的主键 id
。
其实,在 JDBC 中,我们也可以轻松获取的到,但是需要在 Statement
执行 execute
方法时,需要加一个参数: Statement.RETURN_GENERATED_KEYS
,这样, Statement
在执行完毕后会返回一个主键结果集,我们遍历结果集就可以获取到我们插入数据的主键 id
,部分代码如下所示:
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)); }
运行结果如下