如何在批量更新查询(Java,MySQL)中获取自动增量值?

时间:2012-06-06 17:52:08

标签: mysql spring-jdbc batch-updates

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

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

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

由于 Panks

1 个答案:

答案 0 :(得分:0)

使用StatementPreparedStatement对象中的getGeneratedKeys()方法来识别新的自动生成值。迭代返回的ResultSet对象,以批处理语句的顺序获取新生成的键值。

如果您使用的JDBC驱动程序不支持此方法,则此调用可能会抛出java.sql.SQLFeatureNotSupportedException

示例代码段

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