Terminée la picole, maintenant c’est du sérieux ! Et bientôt, les petites croisières…
Vous allez créér une entité java qui correspondra à 2 tables dans la base de données MySQL.
A FAIRE :
Créer les 3 packages comme dans pinard01
comme dans
Créer une Entité Client mappée sur deux tables :
Dans le package model, créez la classe Client qui comportera les attributs suivants :
private int id; private String nom; private String prenom; private String voie; private String complement; private String codePostal; private String ville; private String pays;
id
CLIENT
ADRESSE
Les propriétés voie, complement, codePostal, ville et pays seront mappés respectivement sur les colonnes nommées de la table Adresse :
@Table(name="CLIENT") @SecondaryTable(name="ADRESSE", pkJoinColumns={@PrimaryKeyJoinColumn(name="ID_CLIENT")})
@Column(length = 32, name="VOIE", table="ADRESSE") public String getVoie() { return voie; }
Voici le code à ajouter dans votre controleur :
@CrossOrigin("*") @RestController public class ClientController { @Autowired private ClientRepository clientRepository; @GetMapping("/") @ResponseBody public String home() { Client martin=new Client("MARTIN","Jean","65, rue de la Republique","","78100","VERSAILLES", "FRANCE"); martin=clientRepository.saveAndFlush(martin); Client dupont=new Client("DUPONT","sophie","5, rue du Renard","","75015","PARIS","FRANCE"); dupont=clientRepository.saveAndFlush(dupont); Client durand=new Client("DURAND","Pierre","20, boulevard Gambetta","","78300","POISSY","FRANCE"); durand=clientRepository.saveAndFlush(durand); Client madec=new Client("MADEC","Denis","29, boulevard Devaux","","78300","POISSY","FRANCE"); clientRepository.saveAndFlush(madec); System.out.println(); System.out.println("Liste de tous les clients:"); Collection<Client> liste=clientRepository.findAll(); this.affiche(liste); System.out.println("MARTIN Jean habite desormais avec DUPONT Sophie:"); martin.setVoie(dupont.getVoie()); martin.setComplement(dupont.getComplement()); martin.setCodePostal(dupont.getCodePostal()); martin.setVille(dupont.getVille()); martin.setPays(dupont.getPays()); clientRepository.saveAndFlush(martin); System.out.println("DURAND Pierre est decede :"); clientRepository.delete(durand); System.out.println("Liste de tous les clients:"); this.affiche(clientRepository.findAll()); StringBuilder sb = new StringBuilder(); sb.append("<h1>Regardez dans votre console et dans votre base de données MySQL <strong>JPA</strong></h1>"); sb.append("<a href='http://localhost:8080/clients'>Voir la liste des clients enregistrés</a>"); return sb.toString(); } @GetMapping(value = "/clients") public ResponseEntity<?> getAll(){ List<Client> liste = null; try { liste = clientRepository.findAll(); } catch (Exception e) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); } return ResponseEntity.status(HttpStatus.OK).body(liste); } /** * Méthode pour affichage dans la console * @param liste */ private void affiche(Collection<Client> liste) { for (Client client : liste) { System.out.println(client); } }
Voici ce que vous devez écrire pour lancer votre controleur depuis votre navigateur :
http://localhost:8080/
puis testez : http://localhost:8080/clients
vous devez obtenir ceci :
Retour vers les autres exercices