Spring Boot如何与数据库整合?此篇告诉你!

本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8
第一步:配置数据库连接(H2、MySQL、PostgreSQL等)
1.1 选择数据库
在Spring Boot中,配置数据库连接非常简单。Spring Boot支持多种数据库,包括内存数据库(如H2),关系型数据库(如MySQL、PostgreSQL等)。你可以根据需求选择适合的数据库。
1.1.1 配置H2数据库
H2是一种轻量级的内存数据库,非常适合开发和测试环境。你可以在application.properties
中配置H2数据库连接:
# src/main/resources/application.properties
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.h2.console.enabled=true
开启了H2的Web控制台,可以通过浏览器访问数据库。
1.1.2 配置MySQL数据库
对于生产环境,MySQL是一个常用的数据库选项。配置MySQL需要在application.properties
文件中指定数据库连接信息:
# src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=rootpassword
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
1.1.3 配置PostgreSQL数据库
PostgreSQL是另一种常见的关系型数据库,配置方式类似于MySQL,只需要调整数据库连接URL和驱动类即可:
# src/main/resources/application.properties
spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.username=postgres
spring.datasource.password=postgrespassword
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
第二步:Spring Boot的JPA配置与使用
Spring Boot默认集成了Spring Data JPA,可以简化与数据库的交互。我们将通过@Entity
、@Repository
和@Service
注解来定义数据库实体类、仓库层和服务层。
2.1 配置JPA
Spring Boot会自动根据spring.jpa.hibernate.ddl-auto
的配置来决定数据库模式的创建和更新。ddl-auto
的值可以是:
none
:不做任何数据库更改update
:更新数据库模式create
:创建新的数据库表create-drop
:创建表并在应用停止时删除
一般来说,在开发阶段,使用update
比较常见。生产环境中,可能需要手动管理数据库模式。
2.2 创建实体类(Entity)
Spring Data JPA通过@Entity
注解标识一个类为实体类,表示这个类会映射到数据库中的一张表。每个实体类至少需要一个主键,可以通过@Id
注解来指定。
package com.example.demo.model;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
private Long id;
private String name;
private String email;
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
在上面的代码中,User
类被注解为@Entity
,表示它是一个数据库实体类。@Id
注解指定了id
属性为主键。
2.3 创建仓库层(Repository)
Spring Data JPA提供了一个JpaRepository
接口,可以帮助我们简化数据库操作。你只需要创建一个继承JpaRepository
的接口,它会自动提供常用的CRUD操作。
package com.example.demo.repository;
import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
// 可以自定义查询方法
User findByName(String name);
}
UserRepository
接口继承了JpaRepository
,Spring Data JPA会自动为我们提供增、删、改、查等操作。你还可以通过方法名来定义自定义查询(如上面的findByName
)。
2.4 创建服务层(Service)
为了封装业务逻辑,我们通常会创建一个服务层,来调用仓库层提供的数据访问方法。
package com.example.demo.service;
import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
// 增
public User createUser(User user) {
return userRepository.save(user);
}
// 查
public User getUser(Long id) {
return userRepository.findById(id).orElse(null);
}
// 删
public void deleteUser(Long id) {
userRepository.deleteById(id);
}
// 改
public User updateUser(Long id, String name, String email) {
User user = userRepository.findById(id).orElse(null);
if (user != null) {
user.setName(name);
user.setEmail(email);
return userRepository.save(user);
}
return null;
}
}
在服务层,我们通过@Autowired
注入UserRepository
,并实现了增、删、改、查等常见的业务方法。
第三步:数据库操作(增删改查)
接下来,我们来看一些常见的数据库操作:增、删、改、查。
3.1 增:创建用户
通过UserService
类中的createUser
方法,我们可以将一个User
对象保存到数据库中。
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
// 创建用户
@PostMapping
public User createUser(@RequestBody User user) {
return userService.createUser(user);
}
}
在上面的UserController
中,我们通过@PostMapping
注解定义了一个/users
的POST请求接口。客户端可以通过请求体发送User
对象,调用createUser
方法将其保存到数据库中。
3.2 查:获取用户信息
通过UserService
中的getUser
方法,我们可以根据用户ID查询用户信息。
// 获取用户
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.getUser(id);
}
这里,@GetMapping("/{id}")
注解会根据URL中的ID参数调用getUser
方法,查询数据库中的用户信息并返回。
3.3 改:更新用户信息
我们可以通过updateUser
方法来更新已有用户的信息。
// 更新用户
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User user) {
return userService.updateUser(id, user.getName(), user.getEmail());
}
@PutMapping("/{id}")
将HTTP PUT请求映射到updateUser
方法,更新指定ID的用户信息。
3.4 删:删除用户
通过deleteUser
方法删除用户。
// 删除用户
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.deleteUser(id);
}
@DeleteMapping("/{id}")
注解会根据用户ID删除指定用户。
第四步:启动与测试
完成以上配置后,运行Spring Boot应用,你就可以通过Postman或浏览器访问以下接口来进行数据库操作:
POST /users
:创建用户GET /users/{id}
:获取用户信息PUT /users/{id}
:更新用户信息DELETE /users/{id}
:删除用户
总结
在本文中,我们深入探讨了如何在Spring Boot应用中整合数据库,并使用Spring Data JPA简化数据库操作。通过@Entity
、@Repository
、@Service
注解,我们有效地组织了数据库交互的不同层级。无论是增、删、改、查操作,Spring Boot都提供了强大的支持,帮助我们高效地开发和维护应用。
你可以根据自己的需求,选择不同的数据库(如H2、MySQL、PostgreSQL等),并将它们与Spring Boot无缝整合。希望这篇文章能够帮助你快速上手数据库整合,为你的Web应用开发打下坚实的基础!
🧧福利赠与你🧧
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」专栏(全网一个名),bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。
最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。
同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。
️ Who am I?
我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-
- 随机文章
- 热门文章
- 热评文章
- 深入探讨性能测试平台:关键特性、实施策略与最佳实践性能测试平台代码
- 小学生心理测试:了解孩子的内心世界小学生心理测试表
- 日本语能力测试网上报名系统使用指南日本语能力测试报名时间2022
- 探索国际标准智商测试:60题全解析国际标准智商测试60题在线测试
- 国际标准智商测试:探索智力评估的科学方法国际标准测试智商30题解答
- Java Spring Boot 电商系统
- 测测你的脾气爆炸点是什么
- 用openEuler打造你的电子邮件世界:邮件服务器配置完全指南【华为根技术】
- 能力小测试 测你最厉害的才能