2017-04-03 22 views
0

OracleデータベースでSpring JDBCテンプレートを使用しています。 DB挿入が成功したときに自動生成されたIDフィールドを取得します。Javaコードの自動生成IDをOracleデータベースから取得

ここDBから

を自動生成IDを取得するために私を助けてください、私のサンプルコードです:

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 (?,?,?)"); 
     } 
    } 

答えて

0

あなたは、引数(hereを文書化)としてPreparedStatementCreatorKeyGeneratorを取るupdateメソッドのオーバーロードされたバージョンを使用する必要があります:あなたのコードは次のようになります

を:

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()); 
関連する問題