返回介绍

4.1 核心概念

发布于 2020-08-26 12:31:28 字数 4366 浏览 1163 评论 0 收藏 0

Spring Data repository抽象中最核心的接口就是Repository(显而易见的哈)。该接口使用了泛型,需要提供两个类型参数,第一个是接口处理的域对象类型,第二个是域对象的主键类型。这个接口常被看做是一个标记型接口,用来获取要操作的域对象类型和帮助开发者识别继承这个类的接口。在Repository的基础上,CrudRepository接口提供了针对实体类的复杂的CRUD(增删改查)操作。

Example 1.CrudRepository interface(CrudRepository接口)


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

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

    T findOne(ID primaryKey);       //2

    Iterable<T> findAll();          //3

    Long count();                   //4

    void delete(T entity);          //5

    boolean exists(ID primaryKey);  //6

    // … more functionality omitted.
}

1.保存实体类
2.返回指定id的实体类
3.返回所有实体类
4.返回实体类的数量
5.删除指定实体类
6.判断指定id的实体类是否存在

Spring Data也提供了一些针对特定持久化技术的抽象,例如JpaRepositoryMongoRepository。这些接口均继承了CrudRepository

PagingAndSortingRepository接口在CrudRepository的基础上增加了一些方法,使开发者可以方便的对实体类进行分页和排序。

Example 2.PagingAndSortingRepository

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

  Iterable<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);
}

在分页长度为20的基础上,想要获取第二页的User数据,代码如下

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

除了查询方法,还可以使用在查询基础上衍生出的count(获取数量)和delete(删除)方法。

Example 3.Derived Count Query(获取数量)

public interface UserRepository extends CrudRepository<User, Long> {

  Long countByLastname(String lastname);
}

Example 3.Derived Delete Query(删除)

public interface UserRepository extends CrudRepository<User, Long> {

  Long deleteByLastname(String lastname);

  List<User> removeByLastname(String lastname);

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文