Api Spring Boot, mapeamento objeto, buscar pelo CPF ao invez de ID

31/10/2019

8

Estou fazendo uma Api com java com Spring boot,

e gostaria que ele buscasse pelo CPF e nao pelo ID;

http://localhost:8080/pacientes/ID

http://localhost:8080/pacientes/Cpf (sera informado pelo usuario)
http://localhost:8080/pacientes/cpf->http://localhost:8080/pacientes/77777785558
e tenho o seguinte campos na classe PACIENTE;

o ID gostaria de deixar como esta, para ele criar,deleta, e alterar, na url, gostaria de buscar pelo CPF.
________________CLASE DOMAIN____________________________
@Entity
public class Paciente implements Serializable{
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

private Long cpf;
private String nome;

public Paciente() {
}
public Paciente(Integer id,Long cpf, String nome) {
super();
this.id = id;
this.cpf = cpf
this.nome = nome;
}

[.gets sets.]
_______________________________________________________

__________________________PacienteRepository_________________
@Repository
public interface PacienteRepository extends JpaRepository<Paciente, Integer> {

}

_______________________PacienteResource____________________________________
@RestController
@RequestMapping(value = "capientes")
public class PacienteResource {

@Autowired
PacienteService PacienteService;

@GetMapping(value = "/")
public ResponseEntity<Paciente> buscar(@PathVariable Integer id) {
Paciente obj = PacienteService.findId(id);
return ResponseEntity.ok().body(obj);

}

_____________________________PacienteService_____________________


@Service
public class PacienteService {

@Autowired
PacienteRepository repo;



public Paciente findId(Integer id) {
Optional<Paciente> obj = repo.findById(id);
return obj.orElseThrow(() -> new ObjectNotFoundException("Objeto não encontrado! ID: " + id + ", Tipo"+ PacienteService.class.getName()));

}


public Paciente insert (Paciente obj) {
obj.setId(null);
return repo.save(obj);
}
public Paciente update (Paciente obj) {
findId(obj.getId());
return repo.save(obj);
}
public void delete(Integer id) {
findId(id);
try {
repo.deleteById(id);
}
catch (DataIntegrityViolationException e) {
throw new DateIntegrityException("Não é possível excluir uma Paciente ");

}

}
}
____________________________________________________________________________

está funcionado , porem eu preciso ao invés de buscar pelo ID, quero buscar pelo cpf, que a pessoa ira informa, ficando assim:

http://localhost:8080/pacientes/77777788898788

Hoje ele esta buscando paciente somente pelo ID

http://localhost:8080/pacientes/1
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar