@Override
    public List<Funcionario> ListByNome(String nome) {
        Connection conn = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        List<Funcionario> funcionarios = new ArrayList<>();
        try{
            conn = ConnectionFactory.getConnection();
            pstm = conn.prepareStatement(LISTBYNOME);
            pstm.setString(1, "%" + nome + "%");
            rs = pstm.executeQuery();
            while(rs.next()){
                Funcionario f = new Funcionario();
                f.setNome(rs.getString("nome_fn"));
                f.setTelefone(rs.getString("telefone_fn"));
                f.setBairro(rs.getString("bairro_fn"));
                f.setRg(rs.getString("rg_fn"));
                f.setCidade(rs.getString("cidade_fn"));
                f.setEndereco(rs.getString("endereco_fn"));
                f.setCpf(rs.getString("cpf_fn"));
                f.setSalario(rs.getDouble("salario_fn"));
                f.setLOJA_id_loja(rs.getInt("LOJA_id_loja"));
                f.setUSUARIO_id_usuario(rs.getInt("USUARIO_id_usuario"));
                funcionarios.add(f);
            }
        }catch(Exception e){
            JOptionPane.showMessageDialog(null,"Erro ao listar autor por nome " + e);
        }finally{
            try{
                ConnectionFactory.closeConnection(conn, pstm, rs);
            }catch(Exception e){
                JOptionPane.showMessageDialog(null,"Erro ao desconectar com o banco " + e);
            }
        }
        return funcionarios;
    }