在本教程中,我们将使用 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项目结构

[spring-boot-postgresql-maven-example-crud-project-structure](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 请求的请求映射方法,例如:getAllTutorialscreateTutorialupdateTutorialdeleteTutorialfindByPublished...

– 在 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)

进入全屏模式 退出全屏模式

创建一些教程:

[spring-boot-postgresql-maven-example-crud-create-tutorial](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)

进入全屏模式 退出全屏模式

更新一些教程:

[spring-boot-postgresql-maven-example-crud-update-tutorial](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)

进入全屏模式 退出全屏模式

检索所有教程:

[spring-boot-postgresql-maven-example-crud-retrieve-tutorial](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 获取教程:

[spring-boot-postgresql-maven-example-crud-retrieve-one-tutorial](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)

查找所有_已发布的_教程:

[spring-boot-postgresql-maven-example-crud-search-field](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)

查找所有标题包含“环”的教程:

[spring-boot-postgresql-maven-example-crud-search-title](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)

删除教程:

[spring-boot-postgresql-maven-example-crud-delete-tutorial](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)

进入全屏模式 退出全屏模式

删除所有教程:

[spring-boot-postgresql-maven-example-crud-delete-all](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 示例

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐