JPA Example 基本使用使用實例

1、相關接口方法ide

    在繼承JpaRepository接口後,自動擁有了按「實例」進行查詢的諸多方法。這些方法主要在兩個接口中定義,一是QueryByExampleExecutor,一個是JpaRepository,以下所示:
複製代碼
public interface QueryByExampleExecutor<T> { 
<S extends T> S findOne(Example<S> example); //根據「實例」查找一個對象。
<S extends T> Iterable<S> findAll(Example<S> example); //根據「實例」查找一批對象
<S extends T> Iterable<S> findAll(Example<S> example, Sort sort); //根據「實例」查找一批對象,且排序
<S extends T> Page<S> findAll(Example<S> example, Pageable pageable); //根據「實例」查找一批對象,且排序和分頁
<S extends T> long count(Example<S> example); //根據「實例」查找,返回符合條件的對象個數
<S extends T> boolean exists(Example<S> example); //根據「實例」判斷是否有符合條件的對象
}

 

複製代碼
@NoRepositoryBean public interface JpaRepository<T, ID extends Serializable> 
  extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
 ...... 
@Override 
<S extends T> List<S> findAll(Example<S> example); //根據實例查詢 
@Override 
<S extends T> List<S> findAll(Example<S> example, Sort sort);//根據實例查詢,並排序。 
}
複製代碼

 



返回單一對象精準匹配:
ProductCategory productCategory = new ProductCategory();

productCategory.setCategoryId(111);

//將匹配對象封裝成Example對象
Example<ProductCategory> example =Example.of(productCategory);
//根據id:111精準匹配對象,id必須是惟一主鍵,查出2條會報錯
Optional<ProductCategory> one = repository.findOne(example);
多條件,返回集合:

ProductCategory productCategory = new ProductCategory();
productCategory.setCategoryName("喜歡");
 //建立匹配器,即如何使用查詢條件
ExampleMatcher exampleMatcher = ExampleMatcher.matching().withMatcher("categoryName",,ExampleMatcher.GenericPropertyMatchers.endsWith())//endsWith是categoryName 結尾爲喜歡的數據
 .withMatcher("categoryName",ExampleMatcher.GenericPropertyMatchers.startsWith()) //
.withIgnorePaths("isFace");//isFace字段不參與匹配
//建立實例
Example<ProductCategory> example =Example.of(productCategory,exampleMatcher);

//查詢
List<ProductCategory> one = repository.findAll(example);
System.out.println(one);
相關文章
相關標籤/搜索