Spring Data JPA
接口继承关系:
Repository:
CrudRepository
package org.springframework.data.repository;
import java.util.Optional;
@NoRepositoryBean
public interface CrudRepository<T, ID> extends Repository<T, ID> {
<S extends T> S save(S var1);
<S extends T> Iterable<S> saveAll(Iterable<S> var1);
Optional<T> findById(ID var1);
boolean existsById(ID var1);
Iterable<T> findAll();
Iterable<T> findAllById(Iterable<ID> var1);
long count();
void deleteById(ID var1);
void delete(T var1);
void deleteAll(Iterable<? extends T> var1);
void deleteAll();
}
PagingAndSortingRepository
package org.springframework.data.repository;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
@NoRepositoryBean
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
Iterable<T> findAll(Sort var1);
Page<T> findAll(Pageable var1);
}
QueryByExampleExecutor
package org.springframework.data.repository.query;
import java.util.Optional;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
public interface QueryByExampleExecutor<T> {
//根据“实例”查找一个对象。
<S extends T> Optional<S> findOne(Example<S> var1);
//根据“实例”查找一批对象
<S extends T> Iterable<S> findAll(Example<S> var1);
//根据“实例”查找一批对象,且排序
<S extends T> Iterable<S> findAll(Example<S> var1, Sort var2);
//根据“实例”查找一批对象,且排序和分页
<S extends T> Page<S> findAll(Example<S> var1, Pageable var2);
//根据“实例”查找,返回符合条件的对象个数
<S extends T> long count(Example<S> var1);
//根据“实例”判断是否有符合条件的对象
<S extends T> boolean exists(Example<S> var1);
}
JpaRepository
package org.springframework.data.jpa.repository;
import java.util.List;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.QueryByExampleExecutor;
@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
List<T> findAll();
List<T> findAll(Sort var1);
List<T> findAllById(Iterable<ID> var1);
<S extends T> List<S> saveAll(Iterable<S> var1);
void flush();
<S extends T> S saveAndFlush(S var1);
void deleteInBatch(Iterable<T> var1);
void deleteAllInBatch();
T getOne(ID var1);
//根据实例查询
<S extends T> List<S> findAll(Example<S> var1);
//根据实例查询,并排序。
<S extends T> List<S> findAll(Example<S> var1, Sort var2);
}
Page:
package org.springframework.data.domain;
import java.util.Collections;
import java.util.function.Function;
public interface Page<T> extends Slice<T> {
static <T> Page<T> empty() {
return empty(Pageable.unpaged());
}
static <T> Page<T> empty(Pageable pageable) {
return new PageImpl(Collections.emptyList(), pageable, 0L);
}
//@常用:返回分页总数。
int getTotalPages();
//@常用:返回元素总数。
long getTotalElements();
<U> Pa