0

我正在使用 Spring-Jdbc 模板(第一个计时器)来创建 MySql 存储库。我有使用 AutoIncrement 列作为主键的表。

我想知道是否有办法通过每个成功的批量创建语句获取新生成的 ID(autoInc)?

任何指针或样本都会有很大帮助。

谢谢潘克斯

4

1 回答 1

0

使用getGeneratedKeys()您的StatementPreparedStatement对象中的方法来识别新的自动生成的值。迭代返回的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  
于 2012-06-06T19:52:13.350 回答