View on GitHub

lp4-2019

5 - ENTITE CLIENT : MAPPING MULTI-TABLES avec @SecondaryTable (client01)

client05

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éation de la classe Client

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;
@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 :

tp5-multitables.png

Retour vers les autres exercices