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

SpringBoot 増削改検

CRUD操作とは何ですか?

削除操作: を意味します。 作成、読取/検索、更新および 削除これらは持続可能なストレージの基本機能の4つです。

CRUD操作をユーザーインターフェースの約束として定義することができます。この約束により、コンピュータベースのフォームやレポートを通じて情報を検索、検索、および修正することができます。CRUDはデータ指向で、 HTTP動詞の標準化用法。HTTPには重要な動詞があります。

POST: 创建新资源 GET: 读取资源 POST: 新しいリソースを作成する GET: リソースを読み取る

PUT:

既存のリソースを更新する

DELETE: リソースを削除する データベースでは、これらの操作の各ものは一連のコマンドに直接対応しますが、RESTful APIとの関係は少し複雑です。 標準的なCRUD操作 作成操作: それは新しいレコードを作成するためのINSERT文を実行します。 読み取り操作: それはテーブルのレコードを読み取ります。

更新操作:

それはテーブルに対してUPDATE文を実行します。それは入力パラメータにも基づいています。 削除操作: それはテーブルから指定された行を削除します。それは入力パラメータにも基づいています。 CRUD操作の動作原理 CRUD操作は最もダイナミックなウェブサイトの基盤です。したがって、CRUD

HTTP 動詞区別する必要があります。 POST HTTP操作動詞を使用します。 を使用します。新しいレコードを作成する場合、更新 PUT 動詞を使用する必要があります。同様に、1つのレコードを削除する場合、 削除レコードを削除する場合、 DELETE 動詞。CRUD操作を通じて、ユーザーや管理者はオンラインでデータを検索、作成、編集、削除することができます。

CRUD操作を実行するオプションがたくさんあります。最も効果的な選択肢の1つは、操作を実行するためのプロシージャーをSQLで作成することです。

CRUD操作はデータベースアプリケーションで実現されるすべての主要な機能を参照します。 CRUDの各文字はSQL文とHTTPメソッドに対応します。

操作SQL HTTP動詞RESTful Webサービス
Create INSERT PUT/POST POST
Read SELECTGETGET
Update UPDATE PUT/POST/PATCH PUT
DELETE DELETEDELETEDELETE

Spring Boot CrudRepository

Spring Bootは CrudRepository のインターフェースを含んでおり、CRUD操作のためのメソッドが含まれています。それは org.springframework.data.repository で定義されています。それはSpring Dataを拡張しています。 リポジトリインターフェース。それはストレージに対して一般的なCRUD操作を提供します。 CrudRepositoryを使用するには、インターフェースを作成して拡張する必要があります。 CrudRepository

文法

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

その中で

T はストレージ管理のドメインタイプです。 ID はストレージ管理のエンティティのIDタイプです。

PagingAndSortingRepository。

public interface StudentRepository extends CrudRepository<Student, Integer>
{
}

を作成しました。 在上面的例で、名前のある StudentRepository のインターフェースは、CrudRepositoryを拡張しています。その中で、 Student は管理するリポジトリであり、 Integer

はStudentリポジトリで定義されたIDの型です。

SpringがJpaRepositoryを導入しています JpaRepositoryはJPAに関連するメソッドを提供し、フラッシュ、永続性コンテキスト、および一つのレコードをバッチで削除するメソッドを提供します。それはこのパッケージにあります JpaRepositoryは拡張しました CrudRepository および org.springframework.data.jpa.repositoryで定義されています。

PagingAndSortingRepository。

例えば、 
{
}


public interface BookDAO extends JpaRepository

これらのインターフェースを使用する理由は何ですか? これらのインターフェースは、私たちが一般的な操作を実行できるメソッドを提供し、カスタムメソッドを定義することもできます。

CrudRepositoryとJpaRepository

CrudRepository JpaRepository
CrudRepositoryはページネーションやソートのメソッドを提供していません。JpaRepositoryはPagingAndSortingRepositoryを拡張し、ページネーションを実装するためのすべてのメソッドを提供します。
これが使用されますタグインターフェース。JpaRepositoryは拡張しました CrudRepository および PagingAndSortingRepository
CRUD機能のみを提供します。例えば、 findById(), findAll()などです。追加のメソッドとPagingAndSortingRepositoryおよびCrudRepositoryのメソッドを提供します。例えば、 flush(), deleteInBatch()。
JpaRepositoryとPagingAndSortingRepositoryが提供する機能が必要でない場合に使用されます。アプリケーションでページネーションとソート機能を実装する際に使用されます。

Spring Boot CRUD操作の例

Spring Bootアプリケーションを設定し、CRUD操作を実行しましょう。

手順1: Spring Initializrを開いてください http://start.spring.io 。

手順2: Spring Bootのバージョンを選択してください。 2.3.0.M1。

手順2: Group名称。私たちは提供しました。 インターフェースが作成されました。3codebox。

手順3: 提供 Artifact ID。私たちは以下を提供しました spring-boot-crud-operation。

手順5: 依存関係を追加 Spring Web、Spring Data JPA、および H2データベースにパッケージを包装します。

手順6: をクリックします Generate (生成)ボタンをクリックすると、 Jar ファイルから、それをローカルシステムにダウンロードします。

手順7: JarファイルをSTSワークスペースに貼り付けます。

手順8:プロジェクトフォルダーをSTSにインポート

ファイル-> インポート-> 現有のMavenプロジェクト-> ブラウズ-> フォルダースプリングを選択-boot-crud-操作-> 完了

インポートには少し時間がかかります。

手順9: フォルダー内に インターフェースが作成されました。3codebox.model のパッケージ。フォルダー src/main/java。

手順10: パッケージ インターフェースが作成されました。3codebox.modelでクラスを作成します。 以下の名前のクラスを作成しました Booksのクラス。 「本」クラスで以下の操作を行いました:

4つの変数を定義します bookid, bookname, author、および GetterとSettersを生成します。
ファイル上で右クリック-> 源-> Generate Gettersと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;
//mark class as an Entity 
@Entity
//defining class name as Table name
@Table
public class Books
{
//Defining book id as primary key
@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フォルダに以下の名前のクラスを作成します インターフェースが作成されました。3codebox.controller のパッケージ。

手順12: パッケージ インターフェースが作成されました。3codebox.controllerにControllerクラスを作成します。 以下の名前のクラスを作成しました BooksControllerの制御クラス。 BooksControllerクラスでは、以下の操作を行いました:

アノテーションを使用して @RestControllerクラスを RestController アノテーションを使用して @Autowired 自動アノテーション BooksService クラス。 以下のメソッドを定義します: getAllBooks() 。これは、すべての本のリストを返します。 getBooks() これは、パス変数で指定した本の詳細情報を返します。@PathVariableアノテーションを使用して、bookidをパラメータとして渡し、メソッドのパラメータにURIテンプレート変数をバインドする指示を出しました。 deleteeBook() これは、パス変数で指定した特定の本を削除します。 saveBook() 図書の詳細情報を保存します。@RequestBodyアノテーションは、メソッドのパラメータをWebリクエストの正文にバインドする必要があることを示します。 update(): このメソッドは1件のレコードを更新します。更新するレコードを正文で指定する必要があります。同じ目的を達成するために、@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;
//このクラスをControllerとしてマークします
@RestController
public class BooksController 
{
    //BooksServiceクラスを自動装配します
    @Autowired
    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 int saveBook(@RequestBody Books books) 
    {
    booksService.saveOrUpdate(books);
    return books.getBookid();
    }
    //図書の詳細情報を更新するPUTマッピングを作成します
    @PutMapping("/books")
    private Books update(@RequestBody Books books) 
    {
    booksService.saveOrUpdate(books);
    return books;
    }
}

手順13: フォルダー src/main/javaに、 インターフェースが作成されました。3codebox.service のパッケージ。

手順14: 创建一个 Service 类。 インターフェースが作成されました。3codebox.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;
    //使用cruddrepository的findaAll()方法获取所有书籍记录
    public List<Books> getAllBooks() 
    {
    List<Books> books = new ArrayList<Books>();
    booksRepository.findAll().forEach(books1 -> books.add(books1));
    return books;
    }
    //通过使用cruddrepository的findById()方法获取特定的记录
    public Books getBooksById(int id) 
    {
    return booksRepository.findById(id).get();
    }
    //使用CrudRepository的save()方法保存特定记录
    public void saveOrUpdate(Books books) 
    {
    booksRepository.save(books);
    }
    //使用CrudRepository的deleteById()方法删除特定记录
    public void delete(int id) 
    {
    booksRepository.deleteById(id);
    }
    //レコードを更新します。
    public void update(Books books, int bookid) 
    {
    booksRepository.save(books);
    }
}

手順15: フォルダー src/main/javaに、 インターフェースが作成されました。3codebox.repository のパッケージ。

第16ステップを作成します。 リポジトリパッケージ インターフェースが作成されました。3com.w codebox.repositoryで、 BooksRepository それはリポジトリインターフェースを拡張しています。 Crudリポジトリインターフェース。

BooksRepository.java

package com.w3codebox.repository;
import org.springframework.data.repository.CrudRepository;
import com.w3codebox.model.Books;
//repositoryが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 consolespring.h2.console.enabled=true
注意: Hを有効にすることを忘れないでください。2コンソール。

全てのクラスとパッケージを作成した後、プロジェクトのディレクトリ構造は以下の通りです。

今、このアプリケーションを実行します。

手順18: を開きます SpringBootCrudOperationApplication.java ファイルを開いてJavaアプリケーションとして実行します。

SpringBootCrudOperationApplication.java

package com.w3codebox;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootCrudOperationApplication 
{
public static void main(String[] args) 
{
SpringApplication.run(SpringBootCrudOperationApplication.class, args);
}
}
注意: 次のステップで、rest client Postmanを使用します。したがって、Postmanアプリケーションがシステムにインストールされていることを確認してください。

手順19: を開きます Postman以下の操作を実行します:

を選択 POST URL http:を呼び出し//localhost:8080/books。 を選択Body コンテンツタイプを選択します JSON(application/json) データを挿入しました。以下のデータを主体に挿入しました:

{
    "bookid": "5433",
    "bookname": "Core and Advance Java",
    "author": "R. Nageswara Rao",
    "price": "800"
}

クリック送信

リクエストが成功した後、以下が表示されます ステータス: 200 OK これは、レコードがデータベースに成功して挿入されたことを意味します。

同様に、以下のデータを挿入しました。

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

H2コンソールでデータを確認します。

手順20: ブラウザを開いてURL http:を呼び出します//localhost:8080/h2-console。をクリックします Connect ボタンをクリックします。以下のようになります。

をクリックします 接続ボタンをクリックした後、データベースで以下が見つかります Books テーブルが以下のようになります。

手順21: をクリックします Books テーブルをクリックして、次に を実行しますボタンをクリックします。このテーブルは、本文に挿入したデータを表示しています。

手順22: を開きます Postman、URLを送信します:http://localhost:8080/booksの GET を送信します。データベースに挿入したデータが返されます。

URL http://localhost:8080/book/{bookid}を送信 GET のリクエストを指定しました。 bookid 6830 。IDが6830の本の詳細情報。

同様に、以下を送信することで削除することもできます DELETE リクエストを削除します。IDが 5433 の図書レコードを削除します。

を選択 DELETE メソッドを呼び出し、URL http://localhost:8080/書/5433。再びHに移動して2コントロールタブで実行 Select クエリ。IDが 5433 の本がデータベースから削除されました。

同様に、以下を送信することで更新することもできます PUT リクエストを送信してレコードを更新します。IDが 6321 の本の価格を変更します。

を選択 PUT リクエストの正文に、更新するレコードを貼り付けて変更してください。この例では、IDが6321の本のレコード。以下のレコードで、本の価格を変更しました。

{
    "bookid": "6321",
    "bookname": "Data Structures and Algorithms in Java",
    "author": "Robert Lafore",
    "price": "500"
}

クリック送信

今、Hに移動します2コンソールに移動して、変更が反映されたか確認してください。この本の価格が以下のように変更されたことが分かります。


CRUD操作プロジェクトのダウンロード