English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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é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.
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érations | SQL | verbes HTTP | services 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 | DELETE | DELETE | DELETE |
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>
où
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.
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"
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 | 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. |
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
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"
步骤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