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

SpringBoot CRUD

Что такое операции CRUD?

CRUD 代表 Создание, чтение/поиск, обновлениеи Удаление. Это четыре основные функции постоянного хранения.

Операции CRUD можно определить как соглашение пользовательского интерфейса, которое позволяет через компьютерные формы и отчеты просматривать, искать и изменять информацию. CRUD направлен на данные, это Действие глагола HTTPСтандартизированное использование. HTTP имеет важные глаголы.

POST: Создать новый ресурс GET: Читать ресурс PUT: Обновить существующий ресурс DELETE: Удалить ресурс

В базе данных каждая из этих операций напрямую映射ится к набору команд. Однако, их отношение к RESTful API несколько сложнее.

Стандартные операции CRUD

Операция создания: Он выполняет операцию INSERT для создания новой записи. Операция чтения: Он читает записи таблицы на основе входных параметров. Операция обновления: Он выполняет операцию обновления на таблице. Он основан на входных параметрах. Операция удаления: Он удалит указанные строки из таблицы. Он также основан на входных параметрах.

Как работают операции CRUD

Операции CRUD являются основой динамичного веб-сайта. Поэтому我们应该 CRUD С HTTP Действие глаголаОтличить.

Предположим, что мы хотим СозданиеНовая запись,我们应该 использовать глаголы HTTP операции и выполните следующие действия: . Чтобы ОбновлениеЗапись, то我们应该 использовать PUT Глагол. Таким же образом, если нужно УдалениеЗапись, то следует использовать DELETE Глагол. Через операции CRUD пользователи и администраторы имеют право онлайн检索, создание, редактирование и удаление записей.

У нас есть множество вариантов выполнения операций CRUD. Один из самых эффективных вариантов - это создание набора хранимых процедур в SQL для выполнения операций.

CRUD操作引用关系数据库应用程序中实现的所有主要功能。 CRUD的每个字母都可以映射到SQL语句和HTTP方法。

CRUD операции представляют все основные функции, реализованные в приложениях, работающих с реляционными базами данных. Каждая буква CRUD может быть сопоставлена с SQL-запросами и HTTP-методами.операции SQLHTTP глаголы
RESTful Web сервис Create INSERT и выполните следующие действия:
PUT/POST ReadGETGET
SELECT Update UPDATE PUT
PUT/POST/PATCH PUT/POST/PATCHPUT/POST/PATCHPUT/POST/PATCH

Delete

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.

Spring initializes JpaRepository

JpaRepository предоставляет методы, связанные с JPA, такие как обновление, контекст持久ности и удаление одной записи в пакетах. определены в org.springframework.data.jpa.repository. JpaRepository расширяет CrudRepository и PagingAndSortingRepository.

Например:

public interface BookDAO extends JpaRepository 
{
}


Почему стоит использовать эти интерфейсы?

Эти интерфейсы позволяют Spring находить интерфейсы хранилищ и создавать для них代理-объекты. Он предоставляет методы, которые позволяют нам выполнять некоторые стандартные операции. Мы также можем определить пользовательские методы.

CrudRepository и JpaRepository

CrudRepository JpaRepository
CrudRepository не предоставляет никаких методов для разделения и сортировки.JpaRepository расширяет PagingAndSortingRepository. Он предоставляет все методы для реализации разделения.
он используется какметкаинтерфейс.JpaRepository расширяет CrudRepository и PagingAndSortingRepository .
Он предоставляет только CRUD-функции. Например findById(), findAll()и т.д.Он предоставляет некоторые дополнительные методы, а также методы PagingAndSortingRepository и CrudRepository. Например, flush(), deleteInBatch().
используйте, когда не нужны функции JpaRepository и PagingAndSortingRepository.используйте, когда нужно реализовать функции разделения и сортировки в приложении.

Пример CRUD-операций Spring Boot

Давайте настроим приложение 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
SpringApplication.run(SpringBootCrudOperationApplication.class, args); Не забудьте включить консоль 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)
}
}
SpringApplication.run(SpringBootCrudOperationApplication.class, 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 и проверьте, отражены ли изменения. Мы видим, что цена книги изменена, как показано ниже.


Загрузите проект CRUD операций