repository:
1. repository:最頂層的介面,乙個空的介面,統一所有的repository型別,並且能夠讓元件掃瞄的時候能夠自動識別
2. crudrepository: repository的子介面,提供crud的操作
3. pagingandsortingrepository: crudrepository的子介面,新增了分頁和排序的功能
4. jparepository: 是pagingandsortingrepository的子介面,增加一些實用的功能,比如批量操作
5. jpaspecificationexecutor:來定義複雜查詢
@entity表示這個類是乙個實體類,參與jpa和資料庫表的對映
@table表示具體對映的表名
@id表示這個欄位是主鍵,@generatedvalue表示這個主鍵的生成策略
@column表示對映到資料庫的表的欄位名,欄位名和表字段不一致,修改註解@column的name屬性
public inte***ce userrepository extends jparepository, jpaspecificationexecutor
//繼承jparepository方便直接呼叫現有的方法進行crud,
//繼承jpaspecificationexecutor則是方便定義一些複雜的查詢
原生sql與jpql:
定義方法時候,上面加上註解@query,預設nativequery是false,此時value填入的是jpql語句,修改nativequery是true,就能夠寫入sql語句
//@query註解裡面寫jpql語句,定義查詢
@query(nativequery = false,value = " select p from user p where id = ?1")
user readid(integer id);
//query註解也可以定義sql語句,只要將nativequery屬性改為true
@query(nativequery = true, value = "select name from user where id = :id")
string findnamebyid(@param("id")integer id);
update/delete操作需要事務支援,必須在service層,新增事務,因為spring data,預設情況下每個方法是唯讀事務,不能完成update/delete操作。在@query註解中定義,必須加上@modify,告訴spring data 這是乙個update/delete操作。
模糊查詢:
//模糊查詢
@query(nativequery = true,value = " select * from user where name like %?1% ")
user finduserbylikename(string name);
分頁查詢:定義分頁查詢,只需要將查詢的引數和分頁物件作為引數。
pagefindbynamelike(string str , pageable pageable);
public inte***ce userrepository extends jparepository
增加countquery屬性,用於總數的統計 可以不要
@runwith(value = springjunit4classrunner.class)
public class springdatatest
}
ort物件,定義排序規則,常用的是下面這種建構函式,支援可變引數的
public sort(sort.direction direction, string... properties)
使用Spring Data JPA進行分頁和排序
概觀 在處理大量資料時,延遲處理通常是必不可少的。即使服務返回大量資料,消費者也不太可能使用它。考慮乙個購物 客戶在該 上搜尋產品,該 有數千種產品可供展示。獲取數千種產品並在網頁上顯示它們將非常耗時。在大多數情況下,客戶甚至可能不會檢視所有產品。對於這種情況,使用稱為分頁的技術。首先只顯示一小部分...
Spring data JPA使用詳解 超詳細
目錄 jpa 元模型criteria查詢 criteriabuilder 安全查詢建立工廠 criteriaquery 安全查詢主語句 root predicate 過濾條件 predicate 多個過濾條件 spring data jpa簡介 spring data jpa是spring在orm框...
spring data jpa實體繼承
spring jpa中我們要將sql對映到物件,尤其是在spring boot這種高度自動化的環境下使用,大量的最優目錄結構與命名規則可以大大降低配置,約定大於配置貫穿其中。例如我們定義查詢dao,繼承jparepository即可。然後返回的物件,我們可以定義model entity table ...