Bootstrap

import org.springframework.data.jpa.repository.JpaRepository<T, ID>;

org.springframework.data.jpa.repository.JpaRepository<T, ID> 接口中的 ID 类型参数。

理解 JpaRepository<T, ID> 中的 TID

  • T (Type):
    • T 代表的是你想要操作的 实体类 的类型。
    • 例如,如果你有一个名为 User 的实体类,那么 T 就对应 User
    • T 可以是你定义的任何 JPA 实体类,例如 User, Product, Order, InviteCode 等。
  • ID (Identifier):
    • ID 代表的是你实体类中 主键 (Primary Key) 字段 的数据类型。
    • 例如,如果你的 User 实体类的主键字段 id 的类型是 Long,那么 ID 就对应 Long
    • 如果你的 Product 实体类的主键字段 productCode 的类型是 String, 那么 ID 就对应 String
    • ID 必须与你实体类主键字段的类型完全匹配。

JpaRepository 接口的作用:

  • JpaRepository 是 Spring Data JPA 提供的一个核心接口,它继承自 PagingAndSortingRepositoryQueryByExampleExecutor,并提供了一系列常用的数据访问方法。
  • 你只需要继承这个接口,并指定 TID 的类型,Spring Data JPA 就会自动帮你实现很多常见的 CRUD 操作(增删改查)、分页和排序等方法,无需你编写大量重复的代码。
  • 这些方法的签名中,很多地方都用到了 ID 这个类型参数。例如:
    • Optional<T> findById(ID id); (根据ID查找实体)
    • void deleteById(ID id); (根据ID删除实体)
    • T getOne(ID id); (根据ID获取实体)
    • List<T> findAllById(Iterable<ID> ids); (根据多个ID查找实体列表)
  • 由于这些方法需要知道主键的数据类型,所以 JpaRepository 使用了一个类型参数 ID 来表示。

具体例子:

  • JpaRepository<User, Long>:
    • TUser(你的 User 实体类)。
    • IDLong(你的 User 实体类中主键字段 id 的类型,假设是 Long)。
  • JpaRepository<Product, String>:
    • TProduct(你的 Product 实体类)。
    • IDString(你的 Product 实体类中主键字段 productCode 的类型,假设是 String)。
  • JpaRepository<InviteCode, Integer>:
    • TInviteCode (你的 InviteCode 实体类)。
    • IDInteger (你的 InviteCode 实体类中主键字段id的类型,假设是 Integer).

总结:

  • IDJpaRepository 接口中的一个类型参数,它代表了你的 JPA 实体类中主键字段的数据类型。
  • 它必须与你实体类中主键字段的类型匹配。
  • JpaRepository<T, ID> 可以让你方便地操作任何 JPA 实体,因为它能够根据你提供的信息,推断出主键的类型,并提供对应的数据访问方法。

在这里插入图片描述

;