29 - Alterar (PATCH)

Em alguns casos, não queremos atualizar todos os dados de um registro, mas apenas um ou dois campos. Para isso, utilizamos o método @PatchMapping, ideal para alterações parciais.

Exemplo de Implementação

Dentro do seu controle, você pode criar um método assim:


@PatchMapping("/{codigo}")
public PessoaModelo alterarPessoaParcial(@PathVariable Long codigo, @RequestBody PessoaModelo pm) {
    // Obter registro (O Optional no Java, especialmente no contexto do Spring, é uma classe contêiner que representa um valor que pode ou não estar presente, ajudando a evitar NullPointerExceptions ao forçar o tratamento explícito de valores ausentes).
    Optional obj = this.pr.findByCodigo(codigo);
    
    // Converter Optional em PessoaModelo
    PessoaModelo pm2 = obj.get();
    
    // Verificar quais informações foram omitidas ao enviar o PessoaModelo via @RequestBody.
    // Atributos não especificados, não serão modificados.
    if(pm.getNome() != null){
        pm2.setNome(pm.getNome());
    }

    if(pm.getIdade() != null){
        pm2.setIdade(pm.getIdade());
    }

    if(pm.getCidade() != null){
        pm2.setCidade(pm.getCidade());
    }
    
    // Retorno
    return this.pr.save(pm2);
    
}

Esse método permite atualizar apenas os campos enviados no corpo da requisição. Os campos não enviados permanecerão inalterados, desde que a lógica no repositório e no banco de dados suporte isso.

Testando com Thunder Client

  1. Abra o Thunder Client e selecione o método PATCH.
  2. Digite a URL da sua API: http://localhost:8080.
  3. Vá até a aba Body e selecione JSON.
  4. Informe apenas os campos que deseja alterar, por exemplo:

{
  "codigo": 1,
  "idade": 45
}

Observação Importante

O campo codigo é essencial para que o Spring Boot identifique qual registro deve ser alterado.

Ao enviar apenas um campo (como idade), o restante permanece intacto — desde que o comportamento do método save() seja compatível com a lógica de atualização parcial.

Dica

Essa abordagem é mais útil quando combinada com um serviço que busca o registro original, atualiza os campos individualmente e depois salva, garantindo que dados não enviados não sejam apagados.

Clique aqui para se tornar membro do canal

Abaixo segue nossa aula no YouTube: