SpringDataJPA自定義的查詢方法 定義規范
And 並且
Or 或
Is,Equals 等於
Between 兩者之間
LessThan 小於
LessThanEqual 小於等於
GreaterThan 大於
GreaterThanEqual 大於等於
After 之后(時間) >
Before 之前(時間) <
IsNull 等於Null
IsNotNull,NotNull 不等於Null
Like 模糊查詢。查詢件中需要自己加 %
NotLike 不在模糊范圍內。查詢件中需要自己加 %
StartingWith 以某開頭
EndingWith 以某結束
Containing 包含某
OrderBy 排序
Not 不等於
In 某范圍內
NotIn 某范圍外
True 真
False 假
IgnoreCase 忽略大小寫
Repository 定義方法的時候,查詢必須以 find,read,get開頭,條件屬性用關鍵字鏈接,條件屬性首字母大寫,級聯查詢
如果當前實體類有符合條件的屬性,那么優先使用,而不使用級聯屬性,使用級聯屬性,之間用_進行連接.
如果想在@Query使用原生的sql語句,那么需要 @Query(value=("SQL語句"), nativeQuery=true
Specification<> specification = new Specification() {},一般用於組合查詢,一般用它的匿名內部類.
root代表查詢的實體類,query可以從中得到root對象,告訴jpa查詢哪一個實體類,還可以添加查詢條件,還可以結合
EntityManager對象 得到最終查詢的 TypedQuery對象.
CriteriaBuilder對象 用於創建 Criteria相關對象的工廠,可以從中獲取到 Predicate對象.
里面的 toPredicate 方法需要重寫,返回 Predicate對象,這個對象代表一個查詢條件.
JPA常用注解
@Entity 將該類標記為實體類,映射到指定的數據庫的表
@Table name:數據庫的表名
@Id 聲明一個屬性映射為數據庫表的主鍵列,可以標記在屬性上也可以標記在set方法上.
@GeneratedValue 標注主鍵生成策略, strategy:GenerationType.AUTO(默認自動) GenerationType.IDENTITY(數據庫id自增長)
@Basic 簡單的屬性到表字段的映射, getXxx() 方法會默認加上這個注解
@Column name:字段名,unique:唯一約束,nullable:非空約束,length:長度
@Transient 如果一個屬性不需要映射為表中的字段,name需要加這個注解,否則會默認標記為@Basic.(一般用於工具方法)
@Temporal TemporalType:TIMESTAMP(年月日時分秒) DATE(年月日)
@JoinColumn name:映射外鍵的字段名(映射的表直接把表的實體類作為數據類型,如 private 實體類 屬性名)
@ManyToOne 單向多對一關系 fetch:FetchType.LAZY(修改關聯屬性加載策略為懶加載)
@OneToMany 單向一對多關系
@OneToOne 單向一對一,一對一關系時,@JoinColumn 可以加上一條 unique=true 保持唯一性