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语句,便于调试和验证。
热门推荐
全能分公司与股权公司的区别及应用解析
婚姻中的沟通艺术:实用技巧与情感管理策略
这才是婚姻的本质
审车需要交强险保单吗?
双路超过64线程被分组简单解决办法
心理咨询师怎么考取,流程有哪些
物质与意识的辩证关系是什么?具体内容整理
Nature深度|揭秘ChatGPT是如何“思考”的
荧光食品安全检测仪的荧光检测原理剖析
走近统计 | 一起了解人口统计小知识!
头七怪谈游戏最新版本
非深户灵活就业如何参保(内附:9月最新深圳社保缴费明细)
深圳婚假有效期是多长时间
线上线下融合营销:打破边界的创新策略
打造社区文化新生态,艺术与空间的交融
GH3230密度:探究镍基高温合金的密度特性
无人机反制技术多方法实现详解
人生的意义是什么?意义不是“找到的”,而是“活出来的”
新能源汽车电池保修标准及汽车动力系统常见问题解析
简明新闻写作秘籍:聚焦核心内容、构建逻辑框架与语言精炼之道
洪水的级别划分与自救指南
如何拆卸笔记本机械硬盘(轻松学会拆卸笔记本机械硬盘的步骤及注意事项)
高质量彩色打印的技巧与注意事项详解,助你轻松实现完美打印效果
《隐蔽条件的挖掘》课件
申请支付令和起诉有什么区别
支付令和起诉哪个更有效
脑梗塞甘露醇怎么用
钢笔淡彩画的绘制技巧与色彩运用指南
【宝物映长安】别看我只是一只“羊” 汉代卧羊铜灯的聪慧难以想象
OEM是什么?详解这种常见的生产合作模式