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

SpringBoot 추가, 제거, 수정, 검색

CRUD 작업이 무엇인가요?

삭제 작업: 대표 생성, 읽기/조회, 갱신삭제 명사. 마찬가지로, 기록을 제거하려면입니다. 이들은 영구 저장소의 네 가지 기본 기능입니다.

CRUD 작업을 사용자 인터페이스 계약으로 정의할 수 있습니다. 이 계약은 컴퓨터 기반 양식과 보고서를 통해 정보를 검색하고 수정할 수 있도록 합니다. CRUD는 데이터 방향적이며, HTTP 액션 동사의 표준 사용 방법. HTTP는 중요한 동사가 있습니다.

POST: 创建新资源 GET: 读取资源 POST: 새로운 자원을 생성합니다 GET: 자원을 읽습니다

PUT:

존재하는 자원을 업데이트합니다

DELETE: 자원을 제거합니다 데이터베이스에서, 이러한 작업의 각각은 일련의 명령에 직접 매핑됩니다. 그러나, 이들은 RESTful API와의 관계가 약간 복잡합니다. 표준 CRUD操作 생성 작업: INSERT 문을 실행하여 새로운 기록을 생성합니다. 읽기 작업: 테이블 기록을 입력 매개변수에 따라 읽습니다.

업데이트 작업:

테이블에서 update 문을 실행합니다. 이는 입력 매개변수에 기반합니다. 삭제 작업: 지정된 행을 테이블에서 제거합니다. 이는 입력 매개변수에 기반합니다. CRUD操作의 작동 방식 CRUD操作은 가장 동적인 웹 사이트의 기초입니다. 따라서我们应该将와 CRUD

HTTP 작업 조건어구분해야 합니다. POST HTTP 조건어를 사용해야 합니다. 새로운 기록을 추가하려면명사를 사용해야 합니다. PUT 기록을 업데이트하려면 삭제 명사. 마찬가지로, 기록을 제거하려면기록을 제거하려면 DELETE 명사. CRUD操作을 통해 사용자와 관리자는 온라인에서 기록을 검색, 생성, 편집 및 제거할 수 있는 권한을 가집니다.

CRUD操作을 수행할 수 있는 여러 옵션이 있습니다. 가장 효율적인 선택 중 하나는 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 타입입니다.

예를 들어:

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

위의 예제에서는 이름을 가진 StudentRepository 의 인터페이스는 CrudRepository를 확장합니다. 그 중 Student 관리해야 할 저장소는 而 Integer Student 저장소에서 정의된 ID 타입입니다.

Spring이 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가 제공하는 기능이 필요하지 않을 때 사용됩니다.애플리케이션에서 페이징과 정렬 기능을 구현할 때 사용됩니다.

Spring Boot CRUD 작업 예제

Spring Boot 애플리케이션을 설정하고 CRUD 작업을 수행하도록 하겠습니다.

단계1: Spring Initializr를 열어주세요 http://start.spring.io .

단계2: Spring Boot 버전을 선택하세요 2.3.0.M1.

단계2: 그룹이름. 우리는 제공했습니다. 인터페이스.3codebox.

단계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: 디렉토리에서 인터페이스.3codebox.model 의 패키지. 폴더 src/main/java.

단계10: 패키지 인터페이스.3codebox.model에 클래스를 생성했습니다. 이름이 Books 클래스. "도서" 클래스에서 다음 작업을 수행했습니다:

네 개의 변수를 정의합니다 bookid, bookname, author, Getter와 Setter 생성
파일을 오른쪽 클릭하세요-> 소스-> 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(): 그것은 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;
//클래스를 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 that 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#the 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-콘솔. 클릭 Connect 버튼,如下所示.

클릭 연결버튼 후, 데이터베이스에서 볼 수 있습니다. Books 표,如下所示.

단계21: 클릭 Books 표, 그런 다음 실행버튼. 이 표는 본문에 삽입한 데이터를 보여줍니다.

단계22: 열기 Postman,并发送URL为http://localhost:8080/books의 GET 요청을 보냅니다. 이는 우리가 데이터베이스에 입력한 데이터를 반환합니다.

URL http://localhost:8080/book/{bookid}를 보냅니다 GET 요청을 통해 우리는 bookid 6830 다시 돌아옵니다.6830의 책의 상세 정보를 보내면

와 같이, 우리는 DELETE 요청을 통해 기록을 제거합니다. 예를 들어, ID가 5433 의 책 기록을 선택합니다.

선택 DELETE 메서드를 호출하고 URL http://localhost:8080/책/5433다시 H2컨솔에서 실행 Select 조회 5433 의 책이 데이터베이스에서 제거되었습니다.

와 같이, 우리는 PUT 요청을 보내기 위해 ID가 6321 의 책의 가격을 변경합니다.

선택 PUT 요청 본문에, 변경할 기록을 붙여넣고 변경하세요. 이 예제에서, 우리는 ID가6321의 책의 기록. 다음 기록에서, 우리는 책의 가격을 변경했습니다.

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

클릭보내기

지금, H로 이동하세요2컨솔에서 변경이 반영되었는지 확인하세요. 우리는 이 책의 가격이 변경되었음을 확인했습니다. 다음과 같이 보입니다.


CRUD 작업 프로젝트 다운로드