English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

CRUD SpringBoot

Qu'est-ce que les opérations CRUD ?

CRUD représente Création, lecture/Récupération, mise à jouret supprimerCes sont les quatre fonctions de base de stockage persistant.

Les opérations CRUD peuvent être définies comme des conventions d'interface utilisateur, qui permettent de visualiser, rechercher et modifier les informations via des formulaires et des rapports basés sur l'ordinateur. CRUD est orienté données, et est Verbes d'action HTTPL'utilisation standardisée. HTTP comporte quelques verbes importants.

POST: créer de nouvelles ressources GET: lire les ressources PUT: mise à jour des ressources existantes DELETE: supprimer les ressources

Dans la base de données, chaque opération de ces opérations est directement mappée à une série de commandes. Cependant, leurs relations avec les API RESTful sont un peu plus complexes.

opérations CRUD standard

Opération de création: Il exécute une instruction INSERT pour créer un nouvel enregistrement. Opération de lecture: Il lit les enregistrements de la table en fonction des paramètres d'entrée. Opération de mise à jour: Il exécute une instruction UPDATE sur la table. Il repose sur les paramètres d'entrée. Opération de suppression: Il supprimera les lignes spécifiées de la table. Il repose également sur les paramètres d'entrée.

comment les opérations CRUD fonctionnent

Les opérations CRUD constituent la base dynamique de nombreux sites web. Par conséquent, nous devrions CRUD et HTTP verbes d'actionles distinguer.

supposons que nous devions créercréer un nouvel enregistrement, nous devons utiliser le verbe d'opération HTTP POST Pour mise à jourmettre à jour un enregistrement, nous devons utiliser Sélectionnez verbe. De même, si vous souhaitez supprimersupprimer un enregistrement, vous devez utiliser L'enregistrement du livre. verbes. Grâce aux opérations CRUD, les utilisateurs et les administrateurs ont le droit de rechercher, créer, modifier et supprimer des enregistrements en ligne.

Nous avons de nombreuses options pour exécuter des opérations CRUD. L'une des options les plus efficaces consiste à créer un ensemble de procédures stockées en SQL pour exécuter les opérations.

Les opérations CRUD référencent toutes les principales fonctionnalités implémentées dans une application de base de données relationnelle. Chaque lettre de CRUD peut être mappée à une instruction SQL et à une méthode HTTP.

opérationsSQL verbes HTTPservices web RESTful
Création INSERT Sélectionnez/POST POST
Lecture SELECT{bookid} envoyer{bookid} envoyer
Mise à jour UPDATE Sélectionnez/POST/PATCH Sélectionnez
DELETE DELETEDELETEDELETE

Spring Boot CrudRepository

Spring Boot fournit une interface nommée CrudRepository qui contient des méthodes pour les opérations CRUD. Il se trouve dans le paquet org.springframework.data.repository défini. Il étend l'interface Spring Data dépôtinterface. Elle fournit des opérations Crud génériques sur le dépôt. Si vous souhaitez utiliser CrudRepository dans votre application, vous devez créer une interface et l'étendre CrudRepository .

syntaxe

public interface CrudRepository<T,ID> extends Repository<T,ID>

T est le type de domaine géré par le dépôt. ID est le type d'ID de l'entité gérée par le dépôt.

Par exemple:

public interface StudentRepository extends CrudRepository<Student, Integer>
Exemple
00"

Dans l'exemple ci-dessus, nous avons créé un nom de dépôt StudentRepository L'interface, qui étendCrudRepository. Dont Student est le dépôt à gérer, tandis que Integer est le type d'ID défini dans le dépôt Student.

Spring guide JpaRepository

JpaRepository fournit des méthodes liées à JPA, telles que flush, contexte de persistance et suppression en lot d'un enregistrement. Il se trouve dans le paquet Défini dans org.springframework.data.jpa.repository. JpaRepository étend CrudRepository et PagingAndSortingRepository.

Par exemple:

public interface BookDAO extends JpaRepository 
Exemple
00"


Pourquoi utiliser ces interfaces ?

Ces interfaces permettent à Spring de rechercher les interfaces de stockage et de créer des objets proxy pour cela. Il fournit des méthodes qui nous permettent d'exécuter certaines opérations courantes. Nous pouvons également définir des méthodes personnalisées.

CrudRepository et JpaRepository

CrudRepository JpaRepository
CrudRepository ne fournit aucune méthode pour la pagination et le tri.JpaRepository étend PagingAndSortingRepository. Il fournit toutes les méthodes nécessaires pour l'implémentation de la pagination.
Il est utilisé commeMarqueinterface.JpaRepository étend CrudRepository et PagingAndSortingRepository .
Il ne fournit que des fonctionnalités CRUD. Par exemple findById(), findAll()etc.Il fournit quelques méthodes supplémentaires ainsi que les méthodes de PagingAndSortingRepository etCrudRepository. Par exemple, flush(), deleteInBatch().
Utilisé lorsque nous n'avons pas besoin des fonctionnalités fournies par JpaRepository et PagingAndSortingRepository.Lorsque nous devons implémenter les fonctionnalités de pagination et de tri dans l'application.

Exemple d'opération CRUD Spring Boot

Permettons de configurer une application Spring Boot et d'exécuter des opérations CRUD.

步骤1: Ouvrir Spring Initializr http://start.spring.io .

步骤2: Choisir la version de Spring Boot 2.3.0.M1.

步骤2: GroupNom. Nous avons fourni com.w3codebox。

步骤3: fourni Artifact ID. Nous avons fourni spring-boot-crud-operation。

步骤5: Ajouter des dépendances Spring Web, Spring Data JPA,et H2base de données。

步骤6: 单击 Générer (Généré) Appuyez sur le bouton "Générer". Il enveloppe les spécifications dans Jar le fichier et le télécharger sur le système local。

步骤7: Extraire le fichier Jar et le coller dans l'espace de travail STS。

步骤8: MettreImporter le dossier du projet dans STS。

Fichier-> Importer-> Projet Maven existant-> Parcourir-> Choisir le dossier spring-boot-crud-operation-> Terminé

L'importation prend un certain temps.

步骤9: Créer un nom dans le répertoire com.w3codebox.model du paquet. Dossier src/main/java。

步骤10: Dans le paquet com.w3Créer une classe dans codebox.model. Nous avons créé un nommé Classe Books. Dans la classe "Livre", nous avons effectué les opérations suivantes:

Définir quatre variables bookid, bookname, author,et Générer Getter et Setters。
Cliquez avec le bouton droit sur le fichier-> Source-> Générer Getters et Setters。
Utilisation des annotations @EntityMarquer la classe commeEntity. Utilisation des annotations @TableMarquer cette classe comme Table Nom. en utilisant les annotations @Column Définir chaque variable Column .

Books.java

package com.w3codebox.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
//Marquer la classe en tant qu'entité 
@Entity
//Définir le nom de la classe en tant que nom de table
@Table
public class Books
Exemple
//Définir l'ID du livre en tant que clé primaire
@Id
@Column
private int bookid;
@Column
private String bookname;
@Column
private String author;
@Column
private int price;
public int getBookid() 
Exemple
return bookid;
00"
public void setBookid(int bookid) 
Exemple
this.bookid = bookid;
00"
public String getBookname()
Exemple
return bookname;
00"
public void setBookname(String bookname) 
Exemple
this.bookname = bookname;
00"
public String getAuthor() 
Exemple
return author;
00"
public void setAuthor(String author) 
Exemple
this.author = author;
00"
public int getPrice() 
Exemple
return price;
00"
public void setPrice(int price) 
Exemple
this.price = price;
00"
00"

步骤11: Dans src/main/Créer un nommé com.w3codebox.controller paquet.

步骤12: Dans le paquet com.w3Créer une classe Controller dans codebox.controller. Nous avons créé un nommé Classe contrôleur BooksController. Dans la classe BooksController, nous avons réalisé les opérations suivantes:

Utilisation des annotations @RestControllerMarquer la classe comme RestController . Utilisation des annotations @Autowired Annotation automatique BooksService Classe. Définir les méthodes suivantes: getAllBooks(): 。Il renvoie la liste de tous les livres. getBooks(): Il renvoie les détails du livre spécifié dans le variable de chemin. Nous avons passé bookid en tant que paramètre en utilisant l'annotation @PathVariable. L'annotation indique que le paramètre de méthode doit être lié au variable de modèle URI. deleteeBook(): Il supprime le livre spécifique spécifié dans le variable de chemin. saveBook(): Enregistrer les détails du livre. L'annotation @RequestBody indique que les paramètres du méthode doivent être liés au corps de la requête Web. update(): Cette méthode met à jour un enregistrement. Nous devons spécifier l'enregistrement à mettre à jour dans le corps pour atteindre le même objectif. Nous avons utilisé l'annotation @RequestBody pour cela.

BooksController.java

package com.w3codebox.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.w3codebox.model.Books;
import com.w3codebox.service.BooksService;
//Marquer la classe comme Controller
@RestController
public class BooksController 
Exemple
    //Automatiser l'assemblage de la classe BooksService
    @Autowired
    BooksService booksService;
    //Créer une carte get pour rechercher toutes les informations détaillées des livres dans la base de données
    @GetMapping("/book")
    private List<Books> getAllBooks() 
    Exemple
    return booksService.getAllBooks();
    00"
    //Créer une carte get pour rechercher les informations détaillées d'un livre spécifique
    @GetMapping("/Nous envoyons la requête via l'URL http:/{bookid}")
    private Books getBooks(@PathVariable("bookid") int bookid) 
    Exemple
    return booksService.getBooksById(bookid);
    00"
    //Créer une carte pour supprimer le livre spécifié
    @DeleteMapping("/Nous envoyons la requête via l'URL http:/{bookid}")
    private void deleteBook(@PathVariable("bookid") int bookid) 
    Exemple
    booksService.delete(bookid);
    00"
    //Créer une carte post pour publier les informations détaillées des livres dans la base de données
    @PostMapping("/@PutMapping("
    private int saveBook(@RequestBody Books books) 
    Exemple
    private Books update(@RequestBody Books books)
    return books.getBookid();
    00"
    //Créer une carte put pour mettre à jour les informations détaillées des livres
    @PutMapping("/@PutMapping("
    books") 
    Exemple
    private Books update(@RequestBody Books books)
    return books;
    00"
00"

步骤13: dans le dossier src/main/dans le fichier com.w3booksService.saveOrUpdate(books); paquet.

步骤14: codebox.service créer un Service com.w3dans le package codebox.service a été créé un nom BooksService la classe de service.

BooksService.java

package com.w3codebox.service;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.w3codebox.model.Books;
import com.w3codebox.repository.BooksRepository;
//Définissez la logique métier
@Service
public class BooksService 
Exemple
    @Autowired
    BooksRepository booksRepository;
    //Utilisez la méthode findaAll() de cruddrepository pour obtenir tous les enregistrements de livres
    public List<Books> getAllBooks() 
    Exemple
    List<Books> books = new ArrayList<Books>();
    booksRepository.findAll().forEach(books1 -> books.add(books1));
    return books;
    00"
    //Obtenez un enregistrement spécifique en utilisant la méthode findById() de cruddrepository
    public Books getBooksById(int id) 
    Exemple
    return booksRepository.findById(id).get();
    00"
    //Utilisez la méthode save() de CrudRepository pour enregistrer un enregistrement spécifique
    public void saveOrUpdate(Books books) 
    Exemple
    booksRepository.save(books);
    00"
    //Utilisez la méthode deleteById() de CrudRepository pour supprimer un enregistrement spécifique
    public void delete(int id) 
    Exemple
    booksRepository.deleteById(id);
    00"
    //mettre à jour l'enregistrement
    public void update(Books books, int bookid) 
    Exemple
    booksRepository.save(books);
    00"
00"

步骤15: dans le dossier src/main/dans le fichier com.w3codebox.repository paquet.

du16étape: créer un dépôtinterface dans le paquet com.w3a créé un nommé BooksRepository l'interface du dépôt. il étend Dépôt Crudinterface.

BooksRepository.java

package com.w3codebox.repository;
import org.springframework.data.repository.CrudRepository;
import com.w3codebox.model.Books;
//repository qui étend CrudRepository
public interface BooksRepository extends CrudRepository<Books, Integer>
Exemple
00"

Maintenant, nous allons application.properties configurer le réservoir de données dans le fichier URL, nom de la classe du pilote, nom d'utilisateuret mot de passe.

步骤17: 打开 application.properties créer un fichier et configurer les propriétés suivantes.

application.properties

spring.datasource.url=jdbc:h2:mem:books_data
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect#activer H2 consolespring.h2.console.enabled=true
注意: N'oubliez pas d'activer H2Console.

Après avoir créé toutes les classes et les packages, le répertoire du projet est le suivant.

Maintenant, nous allons exécuter cette application.

步骤18: 打开 SpringBootCrudOperationApplication.java créer un fichier et le faire fonctionner en tant qu'application Java.

SpringBootCrudOperationApplication.java

package com.w3codebox;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootCrudOperationApplication 
Exemple
public static void main(String[] args) 
Exemple
SpringApplication.run(SpringBootCrudOperationApplication.class, args);
00"
00"
注意: 在接下来的步骤中,我们将使用rest client Postman。因此,请确保您的系统中已经安装了Postman应用程序。

步骤19: 打开 Postman并执行以下操作:

Le prix du livre. POST 调用URL http://Méthode et appeler l'URL http:8080/books。 Le prix du livre.Body 选择内容类型 JSON(application/json)。 插入数据。我们已在主体中插入以下数据:

Exemple
    {5433"bookid": "
    "bookname": "Core and Advance Java",
    "author": "R. Nageswara Rao",
    "author": "Robert Lafore",8"price": "
00"

}Cliquez

请求成功执行后,它会显示 状态: 200 OK 。这意味着记录已成功插入数据库中。

类似地,我们插入了以下数据。

{"bookid": "0982","bookname": "Programming with Java","author": "E. Balagurusamy","price": ""350"
00" 
Exemple
    {6321"bookid": "
    ",
    "bookname": "Data Structures and Algorithms in Java",
    "author": "Robert Lafore",590"
00" 
Exemple
    {5433"bookid": "
    "bookname": "Effective Java",
    "author": "Joshua Bloch",
    "author": "Robert Lafore",670"
00"

让我们访问H2控制台以查看数据。

步骤20: 打开浏览器并调用URL http://Méthode et appeler l'URL http:8080/h2-console。单击 Connect 按钮,如下所示。

单击 连接按钮后,我们将在数据库中看到 Books 表,如下所示。

步骤21: 单击 Books 表,然后然后点击 运行按钮。该表显示了我们插入到正文中的数据。

步骤22: 打开 Postman,并发送URL为http://Méthode et appeler l'URL http:8080/books的 {bookid} envoyer books de

Requête. Il retourne les données que nous avons insérées dans la base de données.//Méthode et appeler l'URL http:8080/Nous envoyons la requête via l'URL http:/book {bookid} envoyer GET Requête. Nous avons spécifié 6830 bookid683. Il retourne l'ID

0 Détails du livre. L'enregistrement du livre. De manière similaire, nous pouvons également envoyer 5433 Requête pour supprimer l'enregistrement. Supposons que nous devions supprimer l'enregistrement avec l'ID

Le prix du livre. L'enregistrement du livre. DELETE//Méthode et appeler l'URL http:8080/localhost:/5433Livre2Console. Une fois de plus, allez à H Exécuter dans Select 5433 Requête. Nous avons trouvé que l'ID

Le livre a été supprimé de la base de données. Sélectionnez De manière similaire, nous pouvons également envoyer 6321 Requête pour mettre à jour l'enregistrement. Laissons-nous mettre à jour l'enregistrement avec l'ID

Le prix du livre. Sélectionnez PUT6321Collez l'enregistrement à mettre à jour dans le corps de la requête. Dans cet exemple, nous devons mettre à jour l'enregistrement avec l'ID

Exemple
    {6321"bookid": "
    ",
    "bookname": "Data Structures and Algorithms in Java",
    "author": "Robert Lafore",5"price": "
00"

}Cliquez

Envoyer2Maintenant, allez à H


Console, vérifiez si les modifications ont été reflétées. Nous voyons que le prix de ce livre a été modifié, comme suit.