Vous êtes sur la page 1sur 4

TP 3: PARTIE A CREATION d’un Contrôleur Réalisant les opérations CRUD

Objectifs :
1. Comprendre les beans Entity
2. Comprendre les Interface d’Accès aux BD
3. Réaliser des opérations CRUD

Compréhension des Principes IOC


Créer un nouveau projet SpringBoot et rajouter en plus des précédentes dépendances les 2 dépendances
SpringBoot JPA et H2.

Compiler.

Exercice 1 – Création d’un Bean Entité

On va commencer par créer une classe Client et l’annoter avec @Entity comme suit on pourra générer les
get/set avec votre IDE

package com.examplecrud.demo;

import jakarta.persistence.Entity;

@Entity
public class Client {
private long id;

public long getId() {


return id;
}

public void setId(long id) {


this.id = id;
}

public String getNom() {


return nom;
}

public void setNom(String nom) {


this.nom = nom;
}

public int getAge() {


return age;
}

public void setAge(int age) {


this.age = age;
}

private String nom;


private int age;
}
On va rajouter l’annotation @Id et @GeneratedValue au dessus de l’attribut id our dir qu’il s’agit d’une clef
primaire dont la valeur est automatiquement générée et incrémentée

@Id
@GeneratedValue
private long id;

Exercice 2 Les Interfaces

On va créer le Repository associé à la classe Client comme Suit


package com.examplecrud.demo;

import org.springframework.data.jpa.repository.JpaRepository;

public interface ClientReporsitory extends JpaRepository<Client,Long> {


}

Tests Unitaires/Lecture Ecriture dans la Bases


Rajouter les dépendances nécessaires pour les Test Unitaires.

Dans le répertoire test On va créer une classe comme suit, pour faire les tests unitaire du repository avec
JUNIT 5. Exécutez et vérifiez que les Tests sont Successfull.

package com.examplecrud.demo;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest(classes = DemoApplication.class)
@ExtendWith(SpringExtension.class)
class DemoApplicationTests {

@Autowired
ClientRepository repository;
@Test
void contextLoads() {
}
@Test
public void testRepository(){

Client c =new Client();


c.setAge(20);
c.setNom("Adel");

repository.save(c);

assertEquals( 1 ,repository.findAll().size());
Client loadedClient = repository.findById(c.getId()).get();
assertEquals("Adel", loadedClient.getNom());
assertEquals(20, loadedClient.getAge());

c.setNom("Mourad");
repository.save(c);

Client updatedClient = repository.findById(c.getId()).get();


assertEquals("Mourad", updatedClient.getNom());
assertEquals(20, updatedClient.getAge());

repository.delete(c);

assertEquals( 0 ,repository.findAll().size());

}
}

Création d’une API/Controleur Rest

Créer un Contrôleur Rest comme suit en injectant le repository


package com.examplecrud.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
@Autowired
ClientRepository clientRepository;

Rajouter les end points de lecture/update

package com.examplecrud.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
@Autowired
ClientRepository repository;

@RequestMapping(value="/client" Method= RequestMethod.POST)


public Client save(@RequestBody Client client){

repository.save(client);
}
@RequestMapping(value="/client" Method= RequestMethod.PUT)
public Client update(@RequestBody Client client){

repository.save(client);
}

Rajouter les endpoints de suppression et envoie de données


package com.examplecrud.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
public class HelloController {
@Autowired
ClientRepository repository;

@RequestMapping(value="/client", method= RequestMethod.POST)


public Client save(@RequestBody Client client){

return repository.save(client);
}

@RequestMapping(value="/client", method= RequestMethod.PUT)


public Client update(@RequestBody Client client){

return repository.save(client);
}

@RequestMapping(value="/client/{id}", method = RequestMethod.GET)


public Client get(@PathVariable Long id){

return repository.findById(id).orElse(null);
}

public void delete(@PathVariable Long id){

repository.deleteById(id);
}

Test des EndPoints


Installer Postman et Tester tous les EndPoints

Tester aussi avec un Navigateur

Vous aimerez peut-être aussi