Spring Data JPA的简单使用

本文介绍了Spring Data JPA的基本概念和使用方法。通过创建实体类、Dao接口并继承JpaRepository,无需手动编写CRUD操作,JPA会自动生成对应数据库操作。此外,即使需要自定义方法,只需遵循JPA的命名规范,它将自动实现这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
  1. 什么是Spring Data

在这里插入图片描述
Spring Data的特点

在这里插入图片描述
2. 什么是JPA

在这里插入图片描述
3. Spring Data 与JPA的关系

在这里插入图片描述
4. Spring Data JPA工作原理

在这里插入图片描述

Spring Data JPA的简单使用
  1. Spring项目的基本配置如下:
# 数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/vip_test?serverTimezone=UTC&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 输出SQL语句
spring.jpa.show-sql=true

# 格式化sql
spring.jpa.properties.hibernate.format_sql=true

# 自动生成开启,让表跟随entity类而变化
spring.jpa.hibernate.ddl-auto=update

# jpa对应的数据库类型
spring.jpa.database=mysql
  1. 创建实体类,注意:我们这里先不用创建相应的表,jpa会根据实体类的配置自动为我们创建相应的表
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;

@Data
@Entity
@Table(name = "vip_course")
public class VipCourse {
    @Id
//    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @GenericGenerator(name = "myuuid", strategy = "uuid")
    @GeneratedValue(generator = "myuuid")
    @Column(name = "course_id")
    private String courseId;

    // @Column name属性表示当前属性对应的表的字段名,nullable表示该字段可否为空,length该字段的长度
    @Column(name = "course_name", nullable = false, length = 20)
    private String courseName;

    // 没有设置Cloumn中的name时代表属性名和表字段名一致
    @Column
    private double price;

    @Column
    private String description;
}
  1. 创建Dao接口,并继承JpaRepository接口
// VipCourse代表查询的数据所对应的类型,String代表该实体类的对应表的主键类型
public interface CourseRepository extends JpaRepository<VipCourse, String> {
}

这里我们不用写任何的查询方法,JpaRepository默认为我们实现了常用的CRUD方法

  1. 如果Jpa为我们提供的CRUD不能满足需求,我们可以增加自己的方法,而且Jpa会为我们自动实现,前提是方法的名称必须按照Jpa的规范来定义,如:
public interface CourseRepository extends JpaRepository<VipCourse, String> {
    /**
     * 根据courseName进行模糊查询
     * @param courseName
     * @return
     */
    List<VipCourse> findVipCoursesByCourseNameLike(String courseName);
}

在我们定义自己的方法的时候,Jpa会给我们提示名称应该怎么取(如图),按照此规范定义方法就不用我们自己实现,非常方便。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值