Spring数据存储库抽象中的中央接口是“Repository”。 它需要domain类管理以及domain类的属性类型(比如此po类的id)作为类型参数。 此接口主要作为标记接口并捕获要使用的类型,并帮助您发现并扩展此接口。 CrudRepository为被管理的实体类提供了复杂的CRUD功能。

示例3. CrudRepository接口

public interface CrudRepository<T, ID extends Serializable>
    extends Repository<T, ID> {

    <S extends T> S save(S entity); 

    T findOne(ID primaryKey);       

    Iterable<T> findAll();          

    Long count();                   

    void delete(T entity);          

    boolean exists(ID primaryKey);  

    // … more functionality omitted.
}
** 保存给定实体。
** 返回由给定id标识的实体
** 返回所有实体.
** 返回实体的数量.
** 删除给定的实体.
** 指示是否存在具有给定ID的实体.
** 我们还提供持久性技术特定的抽象,例如。 JpaRepositoryMongoRepository。 这些接口扩展CrudRepository,并且暴露底层持久性技术的功能(即基本功能),以及增加的潜在持久行技术接口(可人为扩展适合自己的功能),例如。 CrudRepository。

CrudRepository之上有一个PagingAndSortingRepository抽象,它使得实体对象更容易 进行分页:

Example 4. PagingAndSortingRepository

public interface PagingAndSortingRepository<T, ID extends Serializable>
  extends CrudRepository<T, ID> {

  Iterable<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);
}

访问“User”的第二页(每页20条数据),你可以这样做:

PagingAndSortingRepository<User, Long> repository = // … get access to a bean
Page<User> users = repository.findAll(new PageRequest(1, 20));

除了查询方法之外,关键字的计数和删除查询都是可以做到的。

Example 5. 关键字计数查询

public interface UserRepository extends CrudRepository<User, Long> {

  Long countByLastname(String lastname);
}

Example 6. 关键字删除查询

public interface UserRepository extends CrudRepository<User, Long> {

  Long deleteByLastname(String lastname);

  List<User> removeByLastname(String lastname);

}

results matching ""

    No results matching ""