Spring Boot 与 Spring Data JPA 操作 MySQL 数据库(二)

Spring Boot 与 Spring Data JPA 操作 MySQL 数据库(二)

I. 引言

A. Spring Boot 和 Spring Data JPA 的简介

Spring Boot 是 Spring Framework 的一种快速开发框架,它通过自动配置、约定优于配置等方式,帮助开发人员快速构建 Spring 应用程序。Spring Data JPA 是 Spring 框架提供的一种简化数据库访问的解决方案,它基于 JPA 规范,提供了一种统一的数据访问方式,支持多种关系型数据库。

B. 目的和意义

本文将介绍如何使用 Spring Boot 和 Spring Data JPA 集成 MySQL 数据库,通过使用 JPA 规范,简化 MySQL 数据库的操作,并使用 Spring Boot 的自动配置功能,进一步简化开发流程。

II. Spring Boot 和 Spring Data JPA 的集成

A. 添加依赖

在 pom.xml 文件中添加 Spring Boot 和 Spring Data JPA 的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

C. 配置数据源

在 application.properties 文件中配置 MySQL 数据库的连接信息:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/my_database?serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

B. 使用关联查询

除了基本的 CRUD 操作外,Spring Data JPA 还支持关联查询。假设我们有一个班级表 class,每个学生属于一个班级,那么我们可以通过关联查询找到每个班级对应的学生列表。

1. 创建班级实体类

首先,我们需要创建一个班级实体类,用于映射数据库中的班级表。创建一个 Class 实体类:

@Entity
@Table(name = "class")
public class Class {
   
   

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @OneToMany(mappedBy = "class")
    private List<Student> students;

    // getters and setters
}

可以看到,Class 实体类中包含一个 @OneToMany 注解,用于指定与 Student 实体类的一对多关联关系,mappedBy 属性指定了映射关系的反向属性名,即 Student 实体类中的 class 属性。

2. 修改学生实体类

接着,我们需要在 Student 实体类中添加一个关联属性 class,用于指定每个学生所属的班级。

@Entity
@Table(name = "student")
public class Student {
   
   

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private Integer age;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "class_id")
    private Class clazz;

    // getters and setters
}

可以看到,Student 实体类中包含一个 @ManyToOne 注解,用于指定与 Class 实体类的多对一关联关系,fetch 属性指定了懒加载策略,JoinColumn 属性指定了映射关系的外键字段名。

3. 创建班级仓库接口

接下来,我们需要创建一个班级仓库接口,用于查询班级信息及其关联的学生列表。

@Repository
public interface ClassRepository 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值