English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
CRUD 代表 Создание, чтение/поиск, обновлениеи Удаление. Это четыре основные функции постоянного хранения.
Операции CRUD можно определить как соглашение пользовательского интерфейса, которое позволяет через компьютерные формы и отчеты просматривать, искать и изменять информацию. CRUD направлен на данные, это Действие глагола HTTPСтандартизированное использование. HTTP имеет важные глаголы.
POST: Создать новый ресурс GET: Читать ресурс PUT: Обновить существующий ресурс DELETE: Удалить ресурс
В базе данных каждая из этих операций напрямую映射ится к набору команд. Однако, их отношение к RESTful API несколько сложнее.
Операция создания: Он выполняет операцию INSERT для создания новой записи. Операция чтения: Он читает записи таблицы на основе входных параметров. Операция обновления: Он выполняет операцию обновления на таблице. Он основан на входных параметрах. Операция удаления: Он удалит указанные строки из таблицы. Он также основан на входных параметрах.
Операции CRUD являются основой динамичного веб-сайта. Поэтому我们应该 CRUD С HTTP Действие глаголаОтличить.
Предположим, что мы хотим СозданиеНовая запись,我们应该 использовать глаголы HTTP операции и выполните следующие действия: . Чтобы ОбновлениеЗапись, то我们应该 использовать PUT Глагол. Таким же образом, если нужно УдалениеЗапись, то следует использовать DELETE Глагол. Через операции CRUD пользователи и администраторы имеют право онлайн检索, создание, редактирование и удаление записей.
У нас есть множество вариантов выполнения операций CRUD. Один из самых эффективных вариантов - это создание набора хранимых процедур в SQL для выполнения операций.
CRUD操作引用关系数据库应用程序中实现的所有主要功能。 CRUD的每个字母都可以映射到SQL语句和HTTP方法。
CRUD операции представляют все основные функции, реализованные в приложениях, работающих с реляционными базами данных. Каждая буква CRUD может быть сопоставлена с SQL-запросами и HTTP-методами. | операции | SQL | HTTP глаголы |
RESTful Web сервис | Create | INSERT | и выполните следующие действия: |
PUT/POST | Read | GET | GET |
SELECT | Update | UPDATE | PUT |
PUT/POST/PATCH | PUT/POST/PATCH | PUT/POST/PATCH | PUT/POST/PATCH |
Spring Boot CrudRepository CrudRepository Spring Boot предоставляет интерфейс под названием интерфейсы, которые содержат методы для CRUD-операций. Он находится в пакете определен в org.springframework.data.repository хранениеинтерфейс. Он предоставляет общие операции Crud на хранилище. Если вы хотите использовать CrudRepository в приложении, вам нужно создать интерфейс и расширить CrudRepository .
грамматика
public interface CrudRepository<T,ID> extends Repository<T,ID>
в частности
T является типом области, управляемой хранилищем. ID является типом ID实体, управляемого хранилищем.
Например:
public interface StudentRepository extends CrudRepository<Student, Integer> { }
в примере выше мы создали интерфейс под названием StudentRepository является интерфейсом, который расширяет CrudRepository. В частности Student является хранилищем, которое нужно управлять, а Integer является типом ID, определенным в хранилище Student.
JpaRepository предоставляет методы, связанные с JPA, такие как обновление, контекст持久ности и удаление одной записи в пакетах. определены в org.springframework.data.jpa.repository. JpaRepository расширяет CrudRepository и PagingAndSortingRepository.
Например:
public interface BookDAO extends JpaRepository { }
Эти интерфейсы позволяют Spring находить интерфейсы хранилищ и создавать для них代理-объекты. Он предоставляет методы, которые позволяют нам выполнять некоторые стандартные операции. Мы также можем определить пользовательские методы.
CrudRepository | JpaRepository |
CrudRepository не предоставляет никаких методов для разделения и сортировки. | JpaRepository расширяет PagingAndSortingRepository. Он предоставляет все методы для реализации разделения. |
он используется какметкаинтерфейс. | JpaRepository расширяет CrudRepository и PagingAndSortingRepository . |
Он предоставляет только CRUD-функции. Например findById(), findAll()и т.д. | Он предоставляет некоторые дополнительные методы, а также методы PagingAndSortingRepository и CrudRepository. Например, flush(), deleteInBatch(). |
используйте, когда не нужны функции JpaRepository и PagingAndSortingRepository. | используйте, когда нужно реализовать функции разделения и сортировки в приложении. |
Давайте настроим приложение Spring Boot и выполним CRUD-операции.
Шаг 1: Откройте Spring Initializr http://start.spring.io .
Шаг 2: Выберите версию Spring Boot 2.3.0.M1.
Шаг 2: Groupимя. Мы предоставляем com.w3codebox.
Шаг 3: предоставлять Artifact ID. Мы предоставляем spring-boot-crud-operation.
Шаг 5: добавить зависимости Spring Web, Spring Data JPA,и база данных H2.
Шаг 6: нажмите Generate (создан) кнопка. Когда мы нажимаем кнопку "Создать", он упаковывает спецификации в Jar файл и загрузить его на локальную систему.
Шаг 7: Выкачать Jar файл и вставьте его в рабочую зону STS.
Шаг 8: ДобавитьИмпортировать папку проекта в STS.
Файл->Импорт->Существующий проект Maven->Перейти->Выберите папку spring-boot-crud-operation->Готово
импорт требует некоторого времени.
Шаг 9: в директории создать имя com.w3codebox.model пакет. Директория src/main/java.
Шаг 10: В пакете в пакете com.w3codebox.model. Мы создали класс под названием класс Books. В классе "Книги" мы выполняем следующие действия:
Определить четыре переменные bookid, bookname, author,и Создать Getter и Setter.
Щелкните правой кнопкой мыши файл -> Source -> Generate Getters and Setters. Использование аннотаций @EntityМаркирует класс какEntity. Использование аннотаций @TableМаркировать этот класс Table имя. Используя аннотации @Column Каждую переменную определить Column .
Books.java
package com.w3codebox.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; //Маркируем класс как сущность @Entity //Определяем имя класса как имя таблицы @Table public class Books { //Определяем id книги как основного ключа @Id @Column private int bookid; @Column private String bookname; @Column private String author; @Column private int price; public int getBookid() { return bookid; } public void setBookid(int bookid) { this.bookid = bookid; } public String getBookname() { return bookname; } public void setBookname(String bookname) { this.bookname = bookname; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } }
Шаг11: в в папке src/main/java создайте файл с именем com.w3codebox.controller создать пакет.
Шаг 12: В пакете Создайте класс Controller в пакете com.w3codebox.controller. Мы создали класс под названием Контроллерный класс BooksController. В классе BooksController мы выполнили следующие действия:
Использование аннотаций // Маркировать класс как ControllerМаркирует класс как RestController . Использование аннотаций @Autowired Автоматические аннотации BooksService класс. Определить следующие методы: getAllBooks(): . Он возвращает список всех книг. getBooks(): Он возвращает详细信息 книги, указанной в переменной path. Используя аннотацию @PathVariable, мы передаем bookid в качестве параметра. Аннотация указывает, что методный параметр должен быть привязан к шаблону URI. deleteeBook(): Он удаляет конкретную книгу, указанную в переменной path. saveBook(): Сохранение详细信息 книги. Аннотация @RequestBody означает, что методные параметры должны быть привязаны к телу веб-запроса. update(): Этот метод обновляет одну запись. Мы должны указать запись в теле запроса для достижения этой цели. Для этого мы используем аннотацию @RequestBody.
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; import com.w3codebox.service.BooksService; // Маркировать класс как Controller @RestController { public class BooksController @Autowired // Автоматическое внедрение класса BooksService BooksService booksService; // Создать get-маппинг для поиска всех книг в базе данных @GetMapping("/book") { private List<Books> getAllBooks() } return booksService.getAllBooks(); // Создать get-маппинг для поиска详细信息 конкретной книги @GetMapping("/book/{bookid}") { private Books getBooks(@PathVariable("bookid") int bookid) } return booksService.getBooksById(bookid); // Создать маппинг для удаления указанной книги @DeleteMapping("/book/{bookid}") { private void deleteBook(@PathVariable("bookid") int bookid) } booksService.delete(bookid); // Создать post-маппинг для публикации详细信息 книги в базе данных @PostMapping("/books") { private Books update(@RequestBody Books books) private int saveBook(@RequestBody Books books) } return books.getBookid(); // Создать put-маппинг для создания или обновления详细信息 книги @PutMapping("/books") { private Books update(@RequestBody Books books) return books; } }
booksService.saveOrUpdate(books); в папке в папке src/main/java создайте файл с именем Шаг 13: создать пакет.
com.w3codebox.service Шаг 14: создать Сервис в пакете com.w3codebox.service был создан класс с именем BooksService служебный класс。
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; //Определение бизнес-логики @Service public class BooksService { @Autowired BooksRepository booksRepository; //Использование метода findAll() из cruddrepository для получения всех записей о книгах public List<Books> getAllBooks() { List<Books> books = new ArrayList<Books>(); booksRepository.findAll().forEach(books1 -> books.add(books1)); return books; } //Получение конкретной записи с помощью метода findById() из cruddrepository public Books getBooksById(int id) { return booksRepository.findById(id).get(); } //Использование метода save() из CrudRepository для сохранения конкретной записи public void saveOrUpdate(Books books) { booksRepository.save(books); } //Использование метода deleteById() из CrudRepository для удаления конкретной записи public void delete(int id) { booksRepository.deleteById(id); } //Обновление записи public void update(Books books, int bookid) { booksRepository.save(books); } }
Шаг 15: в папке в папке src/main/java создайте файл с именем com.w3codebox.repository создать пакет.
Шаг 16: Создайте пакет хранениев пакете com.w3codebox.repository был создан интерфейс с именем в пакете BooksRepository он extends интерфейс хранилища. Crud хранилищеинтерфейс.
BooksRepository.java
package com.w3codebox.repository; import org.springframework.data.repository.CrudRepository; import com.w3codebox.model.Books; //repository, который extends CrudRepository public interface BooksRepository extends CrudRepository<Books, Integer> { }
Теперь мы настроим application.properties настройте источник данных в файле URL, имя класса драйвера, имя пользователяи Пароль.
Шаг 17: откройте application.properties запустить файл и настроить следующие свойства.
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#включение консоли H2
После создания всех классов и пакетов структура каталога проекта будет выглядеть следующим образом.
Теперь мы запустим это приложение.
Шаг 18: откройте SpringBootCrudOperationApplication.java запустить файл в качестве Java-приложения.
SpringBootCrudOperationApplication.java
package com.w3codebox; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @SpringBootApplication { public class SpringBootCrudOperationApplication { public static void main(String[] args) } }
В следующих шагах мы будем использовать rest client Postman. Убедитесь, что Postman уже установлен в вашей системе. откройте PostmanШаг 19:
Выберите и выполните следующие действия: POST Выберитевызовите URL http://localhost:8080/books. Тело Выберите тип содержимого JSON(application/json).
{ "price": "590" Вставка данных. Мы вставили следующие данные в тело: "bookname": "Core and Advance Java", "author": "R. Nageswara Rao", }
НажатьОтправить
"price": "800" После успешного выполнения запроса он будет отображать Статус: 200 OK
. Это означает, что запись успешно вставлена в базу данных.
Аналогично, мы вставили следующие данные. } { "bookid": "6321", "bookname": "Data Structures and Algorithms in Java", "author": "Robert Lafore", {"bookid": "0982","bookname": "Programming with Java","author": "E. Balagurusamy","price": "350" } { "price": "590" "bookid": "5433", "bookname": "Effective Java", "author": "Joshua Bloch", }
"price": "670"
давайте访问 H2 консоль, чтобы проверить данные. Шаг 20: откройте браузер и вызовите URL http://localhost:8080/h2-console. Нажмите Подключение
нажмите кнопка подключения, как показано ниже.нажмите на кнопку, и мы увидим в базе данных Books таблица, как показано ниже.
Шаг 21: нажмите Books таблица, затем нажмите запуститекнопка. Эта таблица показывает данные, которые мы вставили в текст.
Шаг 22: откройте Postman, и отправляет URL http://localhost:8080/books GET Запрос. Он возвращает данные, которые мы вставляем в базу данных.
и отправили URL http://localhost:8080/book/{bookid} GET запрос. Мы указали bookid 6830 . Она возвращает детальную информацию о книге с ID
Аналогичным образом, мы также можем отправить DELETE запрос для удаления записи. Предположим, что мы хотим удалить запись с ID 5433 записи о книгах.
Выберите DELETE метод и вызов URL http://localhost:8080/书/5433. Наново выполните в консоли H2 Select запрос. Мы обнаружили, что ID 5433 книгу была удалена из базы данных.
Аналогичным образом, мы также можем отправить PUT запрос для обновления записи. Давайте обновим запись книги с ID 6321 цenu книги.
Выберите PUT В теле запроса вставьте запись, которую нужно обновить, и внесите изменения. В данном примере мы обновляем запись книги с ID 6321. В следующей записи мы изменили цену книги.
{ "bookid": "6321", "bookname": "Data Structures and Algorithms in Java", "author": "Robert Lafore", "price": "500" }
НажатьОтправить
Теперь перейдите в консоль H2 и проверьте, отражены ли изменения. Мы видим, что цена книги изменена, как показано ниже.