public int update(Funcionario f) {
        Connection con = null;
        PreparedStatement pstm = null;
        int retorno = -1;
        try {
            con = ConnectionFactory.getConnection();
            pstm = con.prepareStatement(UPDATE);

            pstm.setString(1, f.getNome());
            pstm.setInt(2, f.getIdade());
            pstm.setString(3, f.getSexo());
            pstm.setDate(4, new java.sql.Date(f.getDataNascimento().getTime()));
            pstm.setString(5, f.getRg());
            pstm.setString(6, f.getCpf());
            pstm.setString(7, f.getTelefone());
            pstm.setDouble(8, f.getSalario());
            pstm.setString(9, f.getCargo());
            pstm.setString(10, f.getLogin());
            pstm.setString(11, f.getSenha());
            pstm.setInt(12, f.getCodigo());

            pstm.execute();
            retorno = f.getCodigo();

        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Erro ao editar os dados do funcionario: " + ex.getMessage());
        } finally {
            try {
                ConnectionFactory.closeConnection(con, pstm);
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, "Erro ao fechar conexão: " + ex.getMessage());
            }
        }
        return retorno;
    }