Spring Data método exists por atributo

Postado em por Wolmir Cezer Garbin em Spring Framework | 145 Visualizações
Última atualização em:

Este tutorial mostra como criar um método para verificar se existe determinado registro com base em um atributo

Todo mundo tem algo para vender, AnuncieOn.com o melhor site de anúncios grátis de todo o Brasil. ABRIR

Antes de entrar no que diz respeito ao Spring Data, vamos entender a necessidade.

Para este exemplo, considere a tabela Blog com os seguintes campos:

+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| nome          | varchar(255) | YES  |     | NULL    |                |
| image         | varchar(255) | YES  |     | NULL    |                |
| link          | varchar(255) | YES  |     | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+

Considerando que queremos verificar se um registro existe na tabela, podemos utilizar a seguinte instrução SQL:

select count(*) from blog where id = ?

Isso nos retorna um valor inteiro que corresponde a quantidade de registros que tem no banco de dados que correspondem a clausula where.

Ou ainda poderiamos escrever assim para retornar true ou false:

select count(*) > 0 from blog where id = ?

Então, caso queira verificar com base em outra coluna, por exemplo a coluna nome basta alterarmos o SQL:

select count(*) > 0 from blog where nome = ?

Método exists do Spring Data

Ótimo, agora que entendemos o conceito, podemos aplicar a mesma ideia usando o Spring Data.

Para isso iniciamos com o mapenamento da Tabela Blog, veja:

import javax.persistence.*;
import javax.validation.constraints.*;

import java.io.Serializable;
import java.time.LocalDateTime;

import lombok.*;

@Entity
@Table(name="BLOG")
@Data
@EqualsAndHashCode(of = "id")
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Blog implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;

    private String nome;

    private String link;

    private String image;

}

Note que utilizamos lombok para gerar os getters e setters. Caso queira saber mais acesse: Por que eu uso o Lombok

Com o devido mapeamento da classe, criaremos a interface para extender de CrudRepository:

import br.com.garbosoftware.news.model.Blog;
import org.springframework.data.repository.CrudRepository;

import java.util.List;

public interface BlogData extends CrudRepository<Blog, Long> {

}

Considerando que estamos verificando com base na coluna id (como no primeiro exemplo em SQL), já temos um método em CrudRepository do Spring Data que nós retorna true ou false, o método existsById. Para este caso poderiamos utilizar da seguinte forma:

[...]

public class BlogServiceImpl implements BlogService {
	
    @Autowired private BlogData data;

    public boolean verificarPorId( Long id ) {
        return data.existsById( id );
    }
}

Agora, partindo para o segundo exemplo, com base no campo nome, precisamos criar o método em BlogData, deixando nossa interface da seguinte forma:

[...]

public interface BlogData extends CrudRepository<Blog, Long> {

    boolean existsByNome(String nome);

}

Assim teremos o mesmo resultado que no comando:

select count(*) > 0 from blog where nome = ?

Retornando a partir deste método true caso o nome exista ou false caso não exista.

Referência:
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#new-features.1-11-0

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

FIQUE POR DENTRO

Receba as novidades todo mês em seu e-mail!

Apoiadores


Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar