1
resposta

@PutMapping de uma forma mais prática

Professor, Achei outra forma que não repita a chamada "topicoRepository.findById(id);",

vi que no seu exemplo eu faço :

Optional topico = topicoRepository.findById(id);

e se ele retornar dado eu chamo o método atualizar e lá ele fazia topicoRepository.getOne(id);

então eu troquei o método atualizar conforme está aqui embaixo e agora eu não preciso mais fazer o getOne mas apenas o findById lá dentro uma única vez.

   @PutMapping(value = "/{id}")
    @Transactional
    public ResponseEntity<TopicoDto> atualizar (@PathVariable Long id, @RequestBody AtualizacaoTopicoForm form){
        Topico topico = form.atualizar(id, topicoRepository);
        if(Objects.nonNull(topico)) {
            return ResponseEntity.ok(new TopicoDto(topico));
        }
        return ResponseEntity.notFound().build();
    }

//Metodo atualizar

     public Topico atualizar(Long id, TopicoRepository topicoRepository) {
        Optional<Topico> topico = topicoRepository.findById(id);

        if(topico.isPresent()) {
            topico.get().setTitulo(this.titulo);
            topico.get().setMensagem(this.getMensagem());
            return topico.get();
        }
        return null;
    }
1 resposta

Oi Lais,

Show de bola! Ficou melhor assim então :)

Bons estudos!