Spring Data JPA学习
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 | CREATE TABLE `user` ( |
JPA的save与delete方法会先做查询,再做保存或删除.详情看如下源码
JPA的查询方法
根据方法名
find…By
read…By
query…By
count…By
get…By
表达式通常是可以连接的运算符的属性遍历。你可以使用组合属性表达式AND和OR。你还可以将运算关键字Between、LessThan、GreaterThan、Like作为属性表达式。
JpaRepository关键字列表
Spel表达式
JPA中 的注解
@Query,使用JPQL语句.要使用原生SQL需要加上nativeQuery=true
@Param
默认情况下,参数是通过顺序绑定在查询语句上的。这使得查询方法对参数位置的重构容易出错。为了解决这个问题,你可以使用@ Param注解指定方法参数的具体名称,通过绑定的参数名字做查询条件。
基本注解
@Entity定义对象将会成为被JPA管理的实体,将映射到指定的数据库表。
@Id定义属性为数据库的主键,一个实体里面必须有一个
@Transient表示该属性并非一个到数据库表的字段的映射,表示非持久化属性,与@Basic作用相反。JPA映射数据库的时候忽略它。
@Column定义该属性对应数据库中的列名。
@Column定义该属性对应数据库中的列名。
@Enumerated很好用,直接映射enum枚举类型的字段。