我使用Angular、SpringBoot和MySQL数据库构建了一个应用程序。它使用CrudRepository,虽然一切都正常工作,但我仍不理解它的工作原理。控制器/存储库如何知道从哪个表中获取数据?我的意思是,我没有指定表名。有人能解释一下这是如何工作的吗?
我使用Angular、SpringBoot和MySQL数据库构建了一个应用程序。它使用CrudRepository,虽然一切都正常工作,但我仍不理解它的工作原理。控制器/存储库如何知道从哪个表中获取数据?我的意思是,我没有指定表名。有人能解释一下这是如何工作的吗?
当您扩展CrudRepository
时,需要定义其泛型类型。在这里,您告诉存储库将从哪个Entity
类中获取数据。而在JPA
中,Entity
类用于表示Tables
。因此,它就知道从哪里获取数据。例如:
public interface UserRepository extends CrudRepository<User, Long> {
}
User
。同时User
是我的实体类,它代表了我数据库中的users
表。因此,这个Repository将处理users
表。在Spring Boot Data JPA应用程序中,任何模型都可以使用@Entity
或@Table(name = "User")
进行注释。 对于前者,默认表名与实体名称相同。
此外,当您创建任何存储库时,例如:public interface UserRepository extends CrudRepository<User,Long>
,默认实体即用户将被引用以以通用方式执行所有操作。
@Entity
和 @Table
组合,并列出了相应的查询。