2012-10-14 6 views
11
private void insertIntoMyTable (Myclass m) { 
    String query = "INSERT INTO MYTABLE (NAME) VALUES (?)"; 
    jdbcTemplate.update(query, m.getName()); 
} 

Wenn die obige Abfrage einen Datensatz einfügt, die ID Spalte in der Tabelle autoincrements.Wie kann ich die autoincrement-ID, wenn ich einen Datensatz in einer Tabelle über jdbctemplate einfügen

Gibt es eine Möglichkeit, diese automatisch inkrementierte ID zum Zeitpunkt des Einfügens zurück zu bekommen. So in diesem Beispiel der Rückgabewert meiner Methode wäre int

+0

Ich denke, Sie wählen müssen möglicherweise kurz nach dem Einsatz in einer Transaktion. – PbxMan

Antwort

15

prüfen this reference. Sie jdbcTemplate.update als verwenden können:

EDIT Hinzugefügt Importe

fragte
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.SQLException; 

import org.springframework.jdbc.core.JdbcTemplate; 
import org.springframework.jdbc.core.PreparedStatementCreator; 
import org.springframework.jdbc.support.GeneratedKeyHolder; 
import org.springframework.jdbc.support.KeyHolder; 

folgenden ist der Code Verwendung:

final String INSERT_SQL = "insert into my_test (name) values(?)"; 
final String name = "Rob"; 
KeyHolder keyHolder = new GeneratedKeyHolder(); 
jdbcTemplate.update(
    new PreparedStatementCreator() { 
     public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { 
      PreparedStatement ps = 
       connection.prepareStatement(INSERT_SQL, new String[] {"id"}); 
      ps.setString(1, name); 
      return ps; 
     } 
    }, 
    keyHolder); 
// keyHolder.getKey() now contains the generated key 
+0

das ist nur in MySql richtig? – PbxMan

+0

Ich habe mich nicht selbst getestet, sollte aber mit mysql – Anshu

+0

arbeiten würden Sie bitte die Importe? – PbxMan

1

Ich bekomme ID von Datenbank generiert ase (MSSQL) nach Einsatz wie unten, Importe:

import org.springframework.jdbc.core.BeanPropertyRowMapper; 
    import org.springframework.jdbc.core.JdbcTemplate; 
    import org.springframework.jdbc.core.RowMapper; 
    import org.springframework.jdbc.core.SqlParameter; 
    import org.springframework.jdbc.core.SqlReturnResultSet; 
    import org.springframework.jdbc.core.simple.SimpleJdbcCall; 

und der Code-Schnipsel:

final String INSERT_SQL = "INSERT INTO [table]\n" 
      + " ([column_1]\n" 
      + " ,[column_2])\n" 
      + " VALUES\n" + 
      " (?, ?)"; 

    Connection connection = jdbcTemplate.getDataSource().getConnection(); 
    PreparedStatement preparedStatement = connection.prepareStatement(INSERT_INVOICE_SQL, Statement.RETURN_GENERATED_KEYS); 
    preparedStatement.setString(1, "test 1"); 
    preparedStatement.setString(2, "test 2"); 

    preparedStatement.executeUpdate(); 
    ResultSet keys = preparedStatement.getGeneratedKeys(); 

    if (keys.next()) { 
     Integer generatedId = keys.getInt(1); //id returned after insert execution 
    }