我正在使用 Spring-Jdbc 模板(第一个计时器)来创建 MySql 存储库。我有使用 AutoIncrement 列作为主键的表。
我想知道是否有办法通过每个成功的批量创建语句获取新生成的 ID(autoInc)?
任何指针或样本都会有很大帮助。
谢谢潘克斯
我正在使用 Spring-Jdbc 模板(第一个计时器)来创建 MySql 存储库。我有使用 AutoIncrement 列作为主键的表。
我想知道是否有办法通过每个成功的批量创建语句获取新生成的 ID(autoInc)?
任何指针或样本都会有很大帮助。
谢谢潘克斯
使用getGeneratedKeys()
您的Statement
或PreparedStatement
对象中的方法来识别新的自动生成的值。迭代返回的ResultSet
对象,按照批处理语句的顺序获取新生成的键值。
java.sql.SQLFeatureNotSupportedException
如果您使用的 JDBC 驱动程序不支持此方法,则 此调用可能会抛出。
示例代码片段:
String sql_insert =
"insert into my_table ( non_auto_incrmnt_fld_names_,_separated ) " +
" values ( record1 ), ( record2 )"; // append as many as required
...
int rowsAffected = stmtObject.executeUpdate( sql_insert, Statement.RETURN_GENERATED_KEYS );
ResultSet rs = stmtObject.getGeneratedKeys();
//******************************************************
rs.last();
int rows = rs.getRow();
System.out.println( "Generated keys count: " + rows );
int currentRow = 1;
rs.beforeFirst();
//******************************************************/
while( rs.next() ) {
System.out.println( /**/( currentRow++ ) + " = " + /**/rs.getInt( 1 ) );
} // while rs