Spring Data JPA学习

一、Spring Data JPA的主要类及结构图

七个Repository接口

Repository (org.springframework.data.repository)

CrudRepository (org.springframework.data.repository)

PagingAndSortingRepository (org.springframework.data.repository)

QueryByExampleExecutor (org.springframework.data.repository.query)

JpaRepository (org.springframework.data.jpa.repository)

JpaSpecificationExecutor (org.springframework.data.jpa.repository)

QueryDslPredicateExecutor (org.springframework.data.querydsl)

两个实现类

SimpleJpaRepository (org.springframework.data.jpa.repository.support)

QueryDslJpaRepository (org.springframework.data.jpa.repository.support)

1
2
3
4
5
6
7
8
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`email` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
)

curl 'localhost:8080/demo/add?name=First&email=someemailesomeemailprovider.com'

JPA的save与delete方法会先做查询,再做保存或删除.详情看如下源码

image-20211219150100196

JPA的查询方法

根据方法名

find…By

read…By

query…By

count…By

get…By

image-20211219151809887

表达式通常是可以连接的运算符的属性遍历。你可以使用组合属性表达式AND和OR。你还可以将运算关键字Between、LessThan、GreaterThan、Like作为属性表达式。

JpaRepository关键字列表

image-20211219152355135

Spel表达式

JPA中 的注解

@Query,使用JPQL语句.要使用原生SQL需要加上nativeQuery=true

image-20211219202117349

@Param

默认情况下,参数是通过顺序绑定在查询语句上的。这使得查询方法对参数位置的重构容易出错。为了解决这个问题,你可以使用@ Param注解指定方法参数的具体名称,通过绑定的参数名字做查询条件。

image-20211219202850685

基本注解
  • @Entity定义对象将会成为被JPA管理的实体,将映射到指定的数据库表。

  • @Id定义属性为数据库的主键,一个实体里面必须有一个

  • @Transient表示该属性并非一个到数据库表的字段的映射,表示非持久化属性,与@Basic作用相反。JPA映射数据库的时候忽略它。

  • @Column定义该属性对应数据库中的列名。

  • @Column定义该属性对应数据库中的列名。

  • @Enumerated很好用,直接映射enum枚举类型的字段。

关联关系注解

image-20211222155642395

image-20211222155654521

image-20211222155740670

内置约束注解

image-20211222160309274

image-20211222160328660