Spring Data JPA的简单使用

前言

  1. 什么是Spring Data

Spring Data JPA的简单使用_第1张图片
Spring Data的特点

Spring Data JPA的简单使用_第2张图片
2. 什么是JPA

Spring Data JPA的简单使用_第3张图片
3. Spring Data 与JPA的关系

Spring Data JPA的简单使用_第4张图片
4. Spring Data JPA工作原理

Spring Data JPA的简单使用_第5张图片

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会给我们提示名称应该怎么取(如图),按照此规范定义方法就不用我们自己实现,非常方便。
Spring Data JPA的简单使用_第6张图片

你可能感兴趣的:(程序人生,spring,spring,data,jpa)