SpringBoot教程

SpringBoot 增删改查

什么是CRUD操作?

CRUD 代表 创建,读取/检索,更新删除。这些是持久性存储的四个基本功能。
可以将CRUD操作定义为用户界面约定,该约定允许通过基于计算机的表单和报告查看,搜索和修改信息。 CRUD是面向数据的,是 HTTP动作动词的标准化用法。 HTTP有一些重要的动词。
POST: 创建新资源 GET: 读取资源 PUT: 更新现有资源 DELETE: 删除资源
在数据库中,这些操作中的每一个都直接映射到一系列命令。但是,它们与RESTful API的关系稍微复杂一些。

标准CRUD操作

创建操作: 它执行INSERT语句以创建新记录。 读取操作: 它根据输入参数读取表记录。 更新操作: 它在表上执行一条update语句。它基于输入参数。 删除操作: 它将删除表中的指定行。它也基于输入参数。

CRUD操作的工作原理

CRUD操作是最动态的网站的基础。因此,我们应该将 CRUD HTTP 动作动词区分开来。
假设我们要 创建一条新记录,我们应该使用HTTP操作动词 POST 。要 更新一条记录,我们应该使用 PUT 动词。同样,如果要 删除记录,则应使用 DELETE 动词。通过CRUD操作,用户和管理员有权在线检索,创建,编辑和删除记录。
我们有许多执行CRUD操作的选项。最有效的选择之一是在SQL中创建一组存储过程来执行操作。
CRUD操作引用关系数据库应用程序中实现的所有主要功能。 CRUD的每个字母都可以映射到SQL语句和HTTP方法。
操作 SQL HTTP动词 RESTful Web服务
Create INSERT PUT/POST POST
Read SELECT GET GET
Update UPDATE PUT/POST/PATCH PUT
Delete Delete Delete Delete

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 Boot CRUD操作

为什么要使用这些接口?

这些接口允许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: Group名称。我们提供了 com.lidihuo。
步骤3: 提供 Artifact ID。我们提供了 spring-boot-crud-operation。
步骤5: 添加依赖项 Spring Web,Spring Data JPA, H2数据库。
步骤6: 单击 Generate (生成)按钮。当我们单击"生成"按钮时,它将规格包装在 Jar 文件中,并将其下载到本地系统。
Spring Boot CRUD操作
步骤7: 提取 Jar文件并将其粘贴到STS工作区中。
步骤8: 将项目文件夹导入STS。
文件->导入->现有Maven项目->浏览->选择文件夹spring-boot-crud-operation->完成
导入需要一些时间。
步骤9: 在目录中创建名称为 com.lidihuo.model 的程序包。文件夹 src/main/java。
步骤10: 在包 com.lidihuo.model中创建类。 我们创建了一个名为 Books的类。 在"图书"类中,我们执行了以下操作:
定义四个变量 bookid, bookname, author, 生成Getter和Setters。
右键单击文件-> Source-> Generate Getters和Setters。
使用注解 @Entity将类标记为Entity 使用注解 @Table,将该类标记为 Table 名称。 通过使用注解 @Column 将每个变量定义为 Column
Books.java
package com.lidihuo.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文件夹中创建一个名称为 com.lidihuo.controller 的包。
步骤12: 在包 com.lidihuo.controller中创建一个Controller类。 我们创建了一个名为 BooksController的控制器类。 在BooksController类中,我们完成了以下操作:
使用注解 @RestController将类标记为 RestController 使用注解 @Autowired 自动注解 BooksService 类。 定义以下方法: getAllBooks(): 。它返回所有书籍的列表。 getBooks(): 它返回我们在path变量中指定的书籍详细信息。通过使用注解@PathVariable,我们已将bookid作为参数传递。注解指示方法参数应绑定到URI模板变量。 deleteeBook(): 它将删除我们在path变量中指定的特定书籍。 saveBook(): 保存图书详细信息。注解@RequestBody表示应将方法参数绑定到Web请求的正文。 update(): 该方法更新一条记录。我们必须在正文中指定要更新的记录吃了为了达到相同的目的,我们使用了@RequestBody注解。
BooksController.java
package com.lidihuo.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.lidihuo.model.Books;
import com.lidihuo.service.BooksService;
//mark class as Controller
@RestController
public class BooksController 
{
//autowire the BooksService class
@Autowired
BooksService booksService;
//creating a get mapping that retrieves all the books detail from the database 
@GetMapping("/book")
private List<Books> getAllBooks() 
{
return booksService.getAllBooks();
}
//creating a get mapping that retrieves the detail of a specific book
@GetMapping("/book/{bookid}")
private Books getBooks(@PathVariable("bookid") int bookid) 
{
return booksService.getBooksById(bookid);
}
//creating a delete mapping that deletes a specified book
@DeleteMapping("/book/{bookid}")
private void deleteBook(@PathVariable("bookid") int bookid) 
{
booksService.delete(bookid);
}
//creating post mapping that post the book detail in the database
@PostMapping("/books")
private int saveBook(@RequestBody Books books) 
{
booksService.saveOrUpdate(books);
return books.getBookid();
}
//creating put mapping that updates the book detail 
@PutMapping("/books")
private Books update(@RequestBody Books books) 
{
booksService.saveOrUpdate(books);
return books;
}
}
步骤13: 在文件夹 src/main/java中创建一个名称为 com.lidihuo.service 的包。
步骤14: 创建一个 Service 类。我们在包 com.lidihuo.service中创建了一个名为 BooksService 的服务类。
BooksService.java
package com.lidihuo.service;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.lidihuo.model.Books;
import com.lidihuo.repository.BooksRepository;
//defining the business logic
@Service
public class BooksService 
{
@Autowired
BooksRepository booksRepository;
//getting all books record by using the method findaAll() of CrudRepository
public List<Books> getAllBooks() 
{
List<Books> books = new ArrayList<Books>();
booksRepository.findAll().forEach(books1 -> books.add(books1));
return books;
}
//getting a specific record by using the method findById() of CrudRepository
public Books getBooksById(int id) 
{
return booksRepository.findById(id).get();
}
//saving a specific record by using the method save() of CrudRepository
public void saveOrUpdate(Books books) 
{
booksRepository.save(books);
}
//deleting a specific record by using the method deleteById() of CrudRepository
public void delete(int id) 
{
booksRepository.deleteById(id);
}
//updating a record
public void update(Books books, int bookid) 
{
booksRepository.save(books);
}
}
步骤15: 在文件夹 src/main/java中创建一个名称为 com.lidihuo.repository 的包。
第16步: 创建一个 存储库界面。我们在包 com.lidihuo.repository中创建了一个名为 BooksRepository 的存储库接口。 它扩展了 Crud存储库界面。
BooksRepository.java
package com.lidihuo.repository;
import org.springframework.data.repository.CrudRepository;
import com.lidihuo.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
#enabling the H2 console
spring.h2.console.enabled=true
注意: 不要忘记启用H2控制台。
创建所有类和包之后,项目目录如下所示。
Spring Boot CRUD操作
现在我们将运行该应用程序。
步骤18: 打开 SpringBootCrudOperationApplication.java 文件并作为Java应用程序运行。
SpringBootCrudOperationApplication.java
package com.lidihuo;
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 按钮,如下所示。
Spring Boot CRUD操作
单击 连接按钮后,我们将在数据库中看到 Books 表,如下所示。
Spring Boot CRUD操作
步骤21: 单击 Books 表,然后然后点击 运行按钮。该表显示了我们插入到正文中的数据。
Spring Boot CRUD操作
步骤22: 打开 Postman,并发送URL为http://localhost:8080/books的 GET 请求。它返回我们插入数据库中的数据。
Spring Boot CRUD操作
我们以URL http://localhost:8080/book/{bookid}发送 GET 请求。我们指定了 bookid 6830 。它返回ID为6830的书的详细信息。
Spring Boot CRUD操作
同样,我们也可以发送 DELETE 请求删除记录。假设我们要删除ID为 5433 的图书记录。
选择 DELETE 方法并调用URL http://localhost:8080/书/5433。再次在H2控制台中执行 Select 查询。我们发现ID为 5433 的图书已从数据库中删除。
Spring Boot CRUD操作
类似地,我们也可以通过发送 PUT 请求来更新记录。让我们更新ID为 6321 的图书的价格。
选择 PUT 在请求正文中,粘贴要更新的记录并进行更改。在本例中,我们要更新ID为6321的书籍的记录。在以下记录中,我们更改了书籍的价格。
{
    "bookid": "6321",
    "bookname": "Data Structures and Algorithms in Java",
    "author": "Robert Lafore",
    "price": "500"
}
点击发送
现在,移至H2控制台,查看更改是否已反映。我们看到这本书的价格已更改,如下所示。
Spring Boot CRUD操作
下载CRUD操作项目

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4