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语句,便于调试和验证。
热门推荐
奥迪A6L更换雨刷怎么设置
睡前如何快速放松?简易助眠小妙招,改善你的睡眠质量!
春节走亲戚,如何避免踩雷?
春节走亲戚必备心理学技巧:如何优雅应对社交挑战
新三样企业出海策略:如何破解美国关税加征的困局
精神不振、情绪低落,精神心理专家教你三招应对节后综合征
春节假期临近尾声,如何调整身心状态?专家告诉你
何首乌的功效与作用是什么 适合哪些人食用
山楂的“死对头”,不能同食,建议多了解!注意了
吃柿子≠胃石,消化科医生教你如何愉快地吃柿子
《绝地求生》毒圈攻略:从机制到实战,全面解析生存之道
绝地求生全军出击:跑毒神技大揭秘!
揭秘车厘子保鲜黑科技:从南半球果园到中国餐桌的科技之旅
神农架野人传说:30年执着探寻,真相究竟如何?
春节必囤:揭秘智利车厘子保鲜黑科技
车厘子保鲜剂超标?教你如何看懂检测报告!
揭秘智利车厘子保鲜黑科技:春节吃上最新鲜的车厘子!
王杰PK邓丽君:谁才是华语乐坛传奇?
DJI智能飞行电池保养秘籍,让你飞得更久!
年后你“戒断”了吗
总觉得时间不够用?试试这18个办法
元旦前高效完成作业的小妙招
被人打了没有证人和监控怎么办?法律为你支招
打架事件处理流程是怎样的
Root后如何保护你的手机安全?
蛛网膜下腔出血的症状及应对措施
蛛网膜下腔出血特征性的表现是什么症状
如何进行室内装修以提升居住舒适度?室内装修有哪些注意事项?
养狗or养猫?谁更能治愈你的心灵?
萌狗成家庭新宠,如何提升家庭幸福感?