Pesquisa uma entidade por algum atributo através do nome do método.
@Repository
public interface FuncionarioRepository extends CrudRepository<Funcionario, Integer> {
List<Funcionario> findByNome(String nome);
}
Também pode ser usado passando mais funções SQL
List<Funcionario> findByNomeLike(String nome);
List<Funcionario> findByNomeEndingWith(String nome)
List<Funcionario> findByNomeStartingWith(String nome)
List<Funcionario> findByNomeIsNull()
List<Funcionario> findByNomeIsNotNull()
List<Funcionario> findByNomeOrderByNomeAsc(String nome);
Mais detalhes:
Em consultas mais complexa que exige um maior número de parâmetros, é recomendado utilizar JPQL ao invés de Derived Query, pois o nome do método complexo de desenvolver e interpretar.
List<Funcionario> findByNomeAndSalarioGreaterThanAndDataContratacao
(String nome, Double salario, LocalDate data);
@Query("SELECT f FROM Funcionario f " +
"WHERE f.nome= :nome AND f.salario >= :salario AND f.dataContratacao = :data")
List<Funcionario> findNomeDataContratacaoSalarioMaior(String nome, Double salario, LocalDate data);
Para o Spring-Data reconhecer o método, é utilizado a anotação @Query que recebe um JPQL como parâmetro.