Comparto mi aporte:
@Override
public void save(Employee emp) {
String query = new String();
if (emp.getEmployee_id() > 0){
query = "UPDATE employees SET " +
"first_name=?," +
"last_name=?, " +
"email=?," +
"phone=?," +
"hire_date=?," +
"job_title=?," +
"salary=?," +
"department=? WHERE employee_id=?";
try(PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(query)){
bindEmployeeParameters(emp, statement);
statement.setInt(9, emp.getEmployee_id());
if(statement.executeUpdate() > 0) System.out.println("Se han actualizado los datos.");
}catch (SQLException e){
System.out.println("Error al actualizar los datos. " + e.getMessage());
}
}else{
query = "INSERT INTO employees (first_name," +
" last_name," +
" email," +
" phone," +
" hire_date," +
" job_title," +
" salary," +
" department) VALUES (?,?,?,?,?,?,?,?)";
try(PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(query)){
bindEmployeeParameters(emp, statement);
if(statement.executeUpdate() > 0) System.out.println("Se han guardado los datos.");
}catch (SQLException e) {
System.out.println("Error al insertar datos. " + e.getMessage());
}
}
}
private static void bindEmployeeParameters(Employee emp, PreparedStatement statement) throws SQLException {
statement.setString(1, emp.getFirst_name());
statement.setString(2, emp.getLast_name());
statement.setString(3, emp.getEmail());
statement.setString(4, emp.getPhone());
statement.setDate(5, (Date) emp.getHire_date());
statement.setString(6, emp.getJob_title());
statement.setDouble(7, emp.getSalary());
statement.setString(8, emp.getDepartment());
}