Spring Boot + PostgreSQL + Maven:CRUD 示例
在本教程中,我们将使用 Maven 构建一个 Spring Boot + PostgreSQL 示例,该示例使用 Spring Data JPA/Hibernate 与 PostgreSQL 数据库交互并导出 Rest CRUD API。你会知道:
-
如何配置 Spring Data、JPA、Hibernate 以使用 PostgreSQL 数据库
-
如何定义数据模型和存储库接口
-
创建Spring Rest Controller处理HTTP请求的方式
-
使用Spring Data JPA与PostgreSQL数据库交互的方式
全文:Spring Boot + PostgreSQL + Maven:CRUD 示例
Spring Boot概述,PostgreSQL示例与Maven
我们将为教程应用程序构建一个 Spring Boot + PostgreSQL + Rest CRUD API:
-
每个教程都有 ID、标题、描述、发布状态。
-
API 帮助创建、检索、更新、删除教程。
-
APIs 还支持自定义查找方法,例如按发布状态或按标题查找。
这些是我们需要提供的 API:
方法
网址
行动
邮政
/api/教程
创建新教程
得到
/api/教程
检索所有教程
得到
/api/tutorials/:id
通过:id检索教程
放
/api/tutorials/:id
通过:id更新教程
删除
/api/tutorials/:id
通过:id删除教程
删除
/api/教程
删除所有教程
得到
/api/教程/已发布
查找所有已发布的教程
得到
/api/tutorials?titleu003d[关键字]
查找标题包含keyword的所有教程
-
我们使用 Spring Data JPA 的
JpaRepository进行 CRUD 操作和查找器方法。 -
通过配置项目依赖和数据源,数据库将是 PostgreSQL。
技术
-
Java 8
-
Spring Boot 2(带有 Spring Web MVC、Spring Data JPA)
-
PostgreSQL
-
马文
Maven项目结构
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--I5SNfIby--/c_limit%2Cf_auto%2Cfl_progressive %2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5liqbzrq967scmflp2s8.png)
让我简要解释一下。
–Tutorial数据模型类对应实体和表_tutorials_。
–TutorialRepository是扩展JpaRepository用于 CRUD 方法和自定义查找器方法的接口。它将在TutorialController中自动接线。
–TutorialController是RestController具有 RESTful 请求的请求映射方法,例如:getAllTutorials、createTutorial、updateTutorial、deleteTutorial、findByPublished...
– 在 application.properties 中配置 Spring Datasource、JPA 和 Hibernate。
– pom.xml 包含 Spring Boot 和 PostgreSQL 的依赖项。
运行应用程序
使用 Maven 运行 Spring Boot + PostgreSQL 应用程序:mvn spring-boot:run。
tutorials 表将在数据库中自动生成。
例如,如果您检查 PostgreSQL,您会看到如下内容:
testdb=# \d tutorials
Table "public.tutorials"
Column | Type | Modifiers
-------------+------------------------+-----------
id | bigint | not null
description | character varying(255) |
published | boolean |
title | character varying(255) |
Indexes:
"tutorials_pkey" PRIMARY KEY, btree (id)
进入全屏模式 退出全屏模式
创建一些教程:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--A-Jm4Dpl--/c_limit%2Cf_auto %2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/so5wyp87n07dvyv0r3ui.png)
testdb=# SELECT * FROM tutorials;
id | description | published | title
----+-------------------+-----------+------------------------------
1 | Tut#1 Description | f | Spring Boot Tut#1
2 | Tut#2 Description | f | PostgreSQL Tut#2
3 | Tut#3 Description | f | Spring Data JPA Tut#3
4 | Tut#4 Description | f | Maven Tut#4
5 | Tut#5 Description | f | Spring Boot PostgreSQL Tut#5
(5 rows)
进入全屏模式 退出全屏模式
更新一些教程:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--6Cdcabzm--/c_limit%2Cf_auto%2Cfl_progressive %2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/us7pgwj918s0gpth7v7x.png)
testdb=# SELECT * FROM tutorials;
id | description | published | title
----+-------------------+-----------+------------------------------
3 | Tut#3 Description | f | Spring Data JPA Tut#3
5 | Tut#5 Description | f | Spring Boot PostgreSQL Tut#5
2 | Desc for Tut#2 | t | PostgreSQL DB Tut#2
4 | Desc for Tut#4 | t | Maven Tut#4
1 | Desc for Tut#1 | t | Spring Boot Tut#1
(5 rows)
进入全屏模式 退出全屏模式
检索所有教程:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--Ke9viZv0--/c_limit%2Cf_auto%2Cfl_progressive %2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j3jnbsl4byerd169t344.png)
按 ID 获取教程:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--oxlMT0J3--/c_limit%2Cf_auto %2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ukoee36t85op5d5tf40r.png)
查找所有_已发布的_教程:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--UZMbzkFS--/c_limit%2Cf_auto%2Cfl_progressive %2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zizqwijhv2zlihpc38js.png)
查找所有标题包含“环”的教程:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--H7jK5kKS--/c_limit%2Cf_auto%2Cfl_progressive %2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cn18ngbiesx721788er6.png)
删除教程:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s--PGUz70VG--/c_limit%2Cf_auto%2Cfl_progressive %2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s84pt7hhkw3cmfpiqc45.png)
testdb=# SELECT * FROM tutorials;
id | description | published | title
----+-------------------+-----------+------------------------------
3 | Tut#3 Description | f | Spring Data JPA Tut#3
5 | Tut#5 Description | f | Spring Boot PostgreSQL Tut#5
2 | Desc for Tut#2 | t | PostgreSQL DB Tut#2
1 | Desc for Tut#1 | t | Spring Boot Tut#1
(4 rows)
进入全屏模式 退出全屏模式
删除所有教程:
[
](https://res.cloudinary.com/practicaldev/image/fetch/s---fya7CJ2---/c_limit%2Cf_auto% 2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aoz03xvj61bg5i06zfqa.png)
testdb=# SELECT * FROM tutorials;
id | description | published | title
----+-------------+-----------+-------
(0 rows)
进入全屏模式 退出全屏模式
源代码
有关分步说明和 Github,请访问:
全文:Spring Boot + PostgreSQL + Maven:CRUD 示例
延伸阅读
Spring Boot 一对多示例与 Spring JPA、Hibernate
如果你想在这个 Spring 项目中添加分页,你可以在以下位置找到说明:
Spring Boot 分页和过滤器示例 | Spring JPA,可分页
按多个字段排序/排序:
Spring Data JPA 按多列排序/排序 |弹簧靴
此 Rest API 的处理异常是必要的:
-
Spring Boot @ControllerAdvice & @ExceptionHandler 示例
-
@RestControllerAdvice 在 Spring Boot 中的示例
或者为 JPA 存储库编写单元测试的方法:
使用 @DataJpaTest 对 JPA 存储库进行 Spring Boot 单元测试
安全:
Spring Boot、Spring Security、PostgreSQL:JWT 身份验证示例
你还可以知道:
-
如何在 AWS 上部署这个 Spring Boot 应用程序(免费)本教程。
-
上传 Excel 文件并将数据存储在 MySQL 数据库中的方法这篇文章
-
上传 CSV 文件并将数据存储在 MySQL 中,这篇文章。
全栈示例:
-
Vue.js + Spring Boot + PostgreSQL 示例
-
Angular 8 + Spring Boot + PostgreSQL 示例
-
Angular 10 + Spring Boot + PostgreSQL 示例
-
Angular 11 + Spring Boot + PostgreSQL 示例
-
React + Spring Boot + PostgreSQL 示例
更多推荐
所有评论(0)