2012-06-06 65 views
0

我正在使用Spring-Jdbc模板(第一个定时器)创建MySql存储库。我有使用AutoIncrement列作为主键的表格。如何在批量更新查询(Java,MySQL)中获得自动增量值?

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

任何指针或样本将是一个很大的帮助。从您的StatementPreparedStatement对象

感谢 Panks

+0

可能重复[?如何获得在JDBC插入ID(http://stackoverflow.com/questions/1915166/how-to-get-the -insert-id-in-jdbc) – eggyal

回答

0

使用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 
+0

谢谢Ravinder,该解决方案与原始jdbc一起使用。我正在使用spring jdbctemplates。我发现它的一个解决方案使用spring jdbc- [链接] http://stackoverflow.com/questions/1665846/identity-from-sql-insert-via-jdbctemplate但我正在寻找批量更新的解决方案。 – Panks