2017-04-03 2 views
0

Ich verwende Spring JDBC-Vorlage mit Oracle-Datenbank. Ich möchte das Auto-generierte ID-Feld bei erfolgreicher DB-Einfügung zurück erhalten. BitteAbrufen automatisch generierter ID in Java-Code von Oracle DataBase

mir helfen, die automatisch generierte ID von DB

Hier zu bekommen, ist mein Beispielcode:

public class EmployeeObject { 
    int employeeId; 
    public int getEmployeeId() { 
     return employeeId; 
    } 
    public void setEmployeeId(int employeeId) { 
     this.employeeId = employeeId; 
    } 
    String firstName; 
    String lastName; 

    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
    public String getLastName() { 
     return lastName; 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 


} 

--DAO Interface--

public interface CreateEmployeeDao { 

    public void insertIntoEmployeeObject(EmployeeObject employeeObject); 
} 

--DAO IMPL--

public class CreateEmployeeDaoImpl implements CreateEmployeeDao{ 

    @Override 
    public void insertIntoEmployeeObject(EmployeeObject employeeObject){ 
      String sqlInsertObject = CreateEmployeeDBQueryConstants.INSERT_OBJECT_DETAILS.toString(); 
      int record = getJdbcTemplate().update(sqlInsertObject, 
        new Object[] { employeeObject.getEmployeeId(), 
            employeeObject.getFirstName(), 
            employeeObject.getLastName()}); 
    } 

} 

DB QUERY CONSTRANT

public class CreateEmployeeDBQueryConstants {  

    public static final StringBuffer INSERT_OBJECT_DETAILS = new StringBuffer(100); 

     static{  
     INSERT_OBJECT_DETAILS.append("insert into EXPORT_OBJECT " 
       + "(EMPLOYEE_ID,EMPLOYEE_FIRST_NAME,EMPLOYEE_LAST_NAME, " 
       + " values (?,?,?)"); 
     } 
    } 

Antwort

0

Sie müssen überladene Version von update Methode verwenden, die PreparedStatementCreator und KeyGenerator als Argumente (dokumentiert here) hat:

Ihr Code wie folgt aussehen:

KeyHolder holder = new GeneratedKeyHolder(); 
PreparedStatementCreator creator = new PreparedStatementCreator() { 
    @Override 
    public PreparedStatement createPreparedStatement(Connection con) throws SQLException { 
     PreparedStatement insertStatement = con.prepareStatement(INSERT_OBJECT_DETAILS, new Object[] { 
           employeeObject.getEmployeeId(), 
           employeeObject.getFirstName(), 
           employeeObject.getLastName()})); 
     return insertStatement; 
    } 
}; 
getJdbcTemplate().update(creator, holder); 
System.out.println(holder.getKey()); 
Verwandte Themen