Spring Boot集成Spring Data JPA实现数据保存
创作时间:
作者:
@小白创作中心
Spring Boot集成Spring Data JPA实现数据保存
引用
CSDN
1.
https://m.blog.csdn.net/weixin_72052233/article/details/139274457
Spring Boot集成Spring Data JPA是实现数据持久化的一种常见方式。本文将详细介绍如何在Spring Boot项目中使用JPA进行数据保存,包括项目搭建、代码实现和测试验证等步骤。
JPA简介
在应用程序运行过程中,通常需要将业务数据保存起来,最常见的保存方式是将数据存储到数据库中。为了简化数据库操作,Spring提供了Spring Data JPA框架,它支持多种数据访问技术,如JDBC、MyBatis、Hibernate和JPA等。
JPA规范定义了一系列标准接口,用于在实体类和数据库表之间建立映射关系。通过使用JPA,开发者可以在代码中进行数据库操作时,无需编写SQL语句,就能实现对数据库表的访问和操作。
项目搭建步骤
1. 新建Spring Boot项目
2. 配置pom.xml
在项目的pom.xml文件中添加以下依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.12.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.study</groupId>
<artifactId>springboot_jpa</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_jpa</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.3.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
3. 配置application.properties
在application.properties文件中添加数据库连接信息和JPA相关配置:
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
spring.datasource.username=root
spring.datasource.password=admin
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true
4. 创建实体类
创建与数据库表对应的实体类,并使用JPA注解标记实体类和字段:
package com.study.springboot_jpa.model;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Data
public class User {
@Id
@GeneratedValue
private long id;
@Column(nullable = false, unique = true)
private String userName;
@Column(nullable = false)
private String password;
@Column(nullable = false)
private int age;
}
5. 创建Repository接口
创建一个继承自JpaRepository的接口,用于对实体类进行数据库操作:
package com.study.springboot_jpa.model;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
User findByUserName(String userName);
}
6. 编写测试用例
在测试类中注入UserRepository,并使用其提供的方法进行数据库操作:
package com.study.springboot_jpa;
import com.study.springboot_jpa.model.User;
import com.study.springboot_jpa.model.UserRepository;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Optional;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
class SpringbootJpaApplicationTests {
@Autowired
private UserRepository userRepository;
@Test
public void userTest() {
User user = new User();
user.setUserName("myCc");
user.setAge(18);
user.setPassword("123");
userRepository.save(user);
User item = userRepository.findByUserName("myCc");
System.out.println(item);
Assert.assertNotNull(item);
Assert.assertEquals(true, userRepository.existsById(1L));
Optional<User> byId = userRepository.findById(1L);
Assert.assertEquals(true, byId.isPresent());
Assert.assertEquals(false, userRepository.findById(2L).isPresent());
userRepository.deleteById(1L);
Assert.assertEquals(false, userRepository.existsById(1L));
}
}
测试注意事项
- 如果遇到包不存在的错误,可以尝试在Terminal运行
mvn idea:idea命令。 - 每次运行测试前,需要先删除数据库并重建,以确保表user为空。可以使用以下SQL语句:
mysql> drop database test;
Query OK, 2 rows affected (0.04 sec)
mysql> create database test;
Query OK, 1 row affected (0.01 sec)
mysql> use test;
Database changed
mysql> select * from user;
Empty set (0.00 sec)
启动项目后,控制台会打印出执行的SQL语句,便于调试和验证。
热门推荐
2025年煤炭行业分析:供需紧平衡下的价值资产机遇
一个经常“心慌”的人,问题可能不只在心脏!5 种情况要提高警惕
行测考试备考,定义判断之多定义题型的解题技巧有哪些?
iPhone进水却不给保修,手机防水真成了鸡肋?
烟熏火腿加工技术详解
发现了延长周末的神奇方法!
日本法学留学回国后的前途展望:挑战与机遇并存
全国近7000万女性终生无子,孤独感正“杀死”现代年轻人
2025年欧洲最适合居住的国家:生活品质与经济承受能力的完美平衡
气候异常监测丨拉尼娜来了?
视觉洞察 | 看过这些设计,才明白什么叫超级符号就是超级创意!
NVIDIA A100显卡深度解析:硬件组成与功能详解
震撼历史的转折点:揭秘日本偷袭珍珠港的真相与影响
一百亿与万龙甲:解码《哪吒2》背后的成都文创崛起之路
酸枣叶茶的功效与作用、禁忌和食用方法
如何了解医院的医疗水平并做出恰当的就医决策?这种就医决策如何考虑患者需求?
护理部主任告诉你:在医院工作,究竟进哪个科室最好?
国庆节后A股走势深度分析
社会工作服务为什么需要项目化
室内设计如何为人们营造舒适感?
非洲版新加坡:卢旺达如何掀起投资兴业热潮?
家装行业深度分析:整装模式崛起,行业集中度提升
世界最大跨径公轨两用悬索桥主塔封顶,重庆黄桷沱长江大桥建设取得重大进展
职场提升:7步打造你的个人竞争力
“可能到150亿”!连创纪录,爆米花都供应不上!海外也“抢疯了”……
湖北黄梅打造158公里多彩旅游路,春节8天接待游客81万人次
Query2doc:基于大语言模型的查询改写方法
前端应用如何做副业
股票的K线是什么?K线图如何进行分析?
从感知到认知 | 智能交通视觉技术最新综述