Spring Boot入门(11):轻松搞定关系型数据库,Spring Boot与JPA的完美结合!
1. 前言
Spring Boot是Spring家族中的一员,也是一个非常重要的组件。Spring Boot的主要目标是简化Spring应用的构建、开发、测试以及部署等过程。Spring Boot提供了一个快速且强大的方式来创建基于Spring的应用程序,并帮助开发者快速构建,减少了很多繁琐的配置工作,使得我们可以专注于业务逻辑的实现。
本篇文章将介绍如何在Spring Boot中整合JPA,实现对数据库的访问和操作。
2. 摘要
本文将通过一个简单的示例来介绍如何在Spring Boot中整合JPA。首先,我们会创建一个简单的实体类,并使用JPA注解来映射到数据库表上。然后,我们会编写一个Repository类,用于对数据库进行增删改查操作。最后,我们会编写一些简单的测试用例来验证我们所编写的代码的正确性。
3. 正文
3.1 Spring Boot 框架和 JPA 持久化框架介绍
Spring Boot 框架是一种基于 Spring 框架的快速开发框架。它采用约定大于配置的方式,自动配置 Spring 应用程序,并且提供了许多常用的功能,如 Web 应用程序、安全性、数据访问等等。
JPA(Java Persistence API) 是一种Java持久化规范,是一组Java API,用于管理Java对象与关系型数据库之间的映射。JPA 提供了一种方便的方式来将 Java 对象映射到关系型数据库中。
3.2 Spring Boot框架和JPA持久化框架的配置
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
示例截图如下:
3.2.1 配置JPA相关的参数
在application.properties文件中,我们需要配置一些JPA相关的参数:
# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JPA相关配置
# 是否打印SQL语句
spring.jpa.show-sql=true
# 是否在控制台显示SQL
spring.jpa.properties.hibernate.format_sql=true
# 自动创建/更新表结构
spring.jpa.hibernate.ddl-auto=update
# 数据库方言,可以自动根据数据库类型选择
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
3.2.2 创建一个简单的实体类
我们先来创建一个简单的实体类,并使用JPA注解来映射到数据库表上。这里我们创建一个名为User的实体类,代表用户信息,包含id、name、age三个属性。
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Integer age;
// 省略getter和setter方法
}
3.2.3 编写Repository类
在Spring Boot中,可以通过继承JpaRepository或者CrudRepository来快速编写一个Repository类。在本文中,我们以继承JpaRepository为例来演示。
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
这里需要注意的是,在Repository接口中不需要编写任何的实现代码,Spring Data JPA会帮我们自动生成相应的实现代码。
3.2.4 编写测试用例
在测试用例中,我们可以通过@Autowired注解注入之前定义的UserRepository,并对其进行增删改查操作。
@SpringBootTest
class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
/**
* 测试保存用户
*/
@Test
void testSaveUser() {
User user = new User();
user.setName("张三");
user.setAge(18);
userRepository.save(user);
}
/**
* 测试根据id查询用户
*/
@Test
void testFindUserById() {
User user = userRepository.findById(1L).orElse(null);
System.out.println(user);
}
/**
* 测试查询所有用户
*/
@Test
void testFindAllUser() {
List<User> userList = userRepository.findAll();
System.out.println(userList);
}
/**
* 测试删除用户
*/
@Test
void testDeleteUser() {
userRepository.deleteById(1L);
}
/**
* 测试更新用户
*/
@Test
void testUpdateUser() {
User user = userRepository.findById(2L).orElse(null);
user.setName("李四");
user.setAge(20);
userRepository.save(user);
}
}
3.2.5 运行测试用例
在运行测试用例之前,需要先创建一个名为test的数据库,并确保在application.properties文件中配置的数据库连接参数正确。然后,我们可以直接运行测试用例,结果如下:
Hibernate: create table user (id bigint not null auto_increment, age integer, name varchar(255), primary key (id))
Hibernate: alter table user modify column id bigint not null auto_increment
Hibernate: insert into user (age, name) values (?, ?)
Hibernate: select user0_.id as id1_0_0_, user0_.age as age2_0_0_, user0_.name as name3_0_0_ from user user0_ where user0_.id=?
User{id=1, name=‘张三’, age=18}
Hibernate: select user0_.id as id1_0_, user0_.age as age2_0_, user0_.name as name3_0_ from user user0_
[User{id=1, name=‘张三’, age=18}]
Hibernate: delete from user where id=?
Hibernate: select user0_.id as id1_0_0_, user0_.age as age2_0_0_, user0_.name as name3_0_0_ from user user0_ where user0_.id=?
Hibernate: update user set age=?, name=? where id=?
从结果中可以看出,我们成功地对数据库进行了增删改查操作。
4. 小结
本文介绍了如何在Spring Boot中整合JPA,通过一个简单的示例演示了如何使用JPA注解定义实体类,并编写Repository类来对数据库进行操作。同时,我们也编写了一些简单的测试用例,验证了我们所编写的代码的正确性。通过对本文的学习,相信读者已经掌握了在Spring Boot中使用JPA的基本方法,可以在实际项目中灵活运用。
关于我
我是bug菌,CSDN | 阿里云 | 华为云 | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金 | InfoQ | 51CTO等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。
- 点赞
- 收藏
- 关注作者
评论(0)