我正在使用Spring-Jdbc模板(第一個定時器)創建MySql存儲庫。我有使用AutoIncrement列作爲主鍵的表格。如何在批量更新查詢(Java,MySQL)中獲得自動增量值?
我不知道是否有辦法讓每個成功的批量創建語句獲得新生成的Ids(autoInc)?
任何指針或樣本將是一個很大的幫助。從您的Statement
或PreparedStatement
對象
感謝 Panks
我正在使用Spring-Jdbc模板(第一個定時器)創建MySql存儲庫。我有使用AutoIncrement列作爲主鍵的表格。如何在批量更新查詢(Java,MySQL)中獲得自動增量值?
我不知道是否有辦法讓每個成功的批量創建語句獲得新生成的Ids(autoInc)?
任何指針或樣本將是一個很大的幫助。從您的Statement
或PreparedStatement
對象
感謝 Panks
使用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
的
謝謝Ravinder,該解決方案與原始jdbc一起使用。我正在使用spring jdbctemplates。我發現它的一個解決方案使用spring jdbc- [鏈接] http://stackoverflow.com/questions/1665846/identity-from-sql-insert-via-jdbctemplate但我正在尋找批量更新的解決方案。 – Panks
可能重複[?如何獲得在JDBC插入ID(http://stackoverflow.com/questions/1915166/how-to-get-the -insert-id-in-jdbc) – eggyal