JpaSpecificationExecutor
-
通过查询条件查询
-
方法
-
Optional<T> findOne(@Nullable Specification<T> spec)
:根据条件查询 -
findAll
:查询所有-
List<T> findAll(@Nullable Specification<T> spec)
:根据条件查询所有 -
Page<T> findAll(@Nullable Specification<T> spec, Pageable pageable)
:根据条件分页[排序] -
List<T> findAll(@Nullable Specification<T> spec, Sort sort)
:根据条件排序
-
-
long count(@Nullable Specification<T> spec)
:查询数量
-
-
Specification
接口:Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder);
- 该接口通常使用匿名内部类
- Predicate 代表查询条件
- Root 代表查询的实体类对象
- CriteriaQuery 可以从中查询到 root 对象,还可以用来添加查询条件,还可以结合EntityManager获取最终查询的
TypeQuery
对象 - CriteriaBuilder 用于创建Criteria相关对象的工厂,当然可以从中获取到 Predicate 对象
Spring Data Jpa中一共提供了
Repository:
-
支持方法命名查询 (提供了findBy + 属性方法 )
-
@Query
HQL: nativeQuery 默认false
SQL: nativeQuery 默认true
更新的时候,需要配合@Modifying使用
CurdRepository:
继承了Repository 主要提供了对数据的增删改查
PagingAndSortRepository:
继承了CrudRepository 提供了对数据的分页和排序,缺点是只能对所有的数据进行分页或者排序,不能做条件判断
JpaRepository:
继承了PagingAndSortRepository,开发中经常使用的接口,主要继承了PagingAndSortRepository,对返回值类型做了适配
JpaSpecificationExecutor
提供多条件查询