2020-03-20 Spring Data JPA 系列教程-1、2 引入依赖及核心接口

1 依赖 dependency

<dependencies>
  <dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
  </dependency>
<dependencies>

2 核心概念 Repository

核心接口是repository。它以类(映射表)和类的ID(主键)类型作为类型参数来管理。此接口主要用作标记接口,可通过继承此接口完成其他功能。CrudRepository为正在管理的实体类提供了复杂的CRUD功能。

2.1 CrudRepository

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

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

  Optional<T> findById(ID primaryKey); 

  Iterable<T> findAll();               

  long count();                        

  void delete(T entity);               

  boolean existsById(ID primaryKey);   

  // … more functionality omitted.
}

对应如下:
保存给定的实体。
返回由给定ID标识的实体。
返回所有实体。
返回实体的数量。
删除给定的实体。
指示是否存在具有给定ID的实体。

Spring Data JPA还提供了特定的持久层抽象类,如JpaRepository或MongoRepository。这些接口扩展了CrudRepository并提供了了持久层的功能和其他通用接口。除了CrudRepository,PagingAndSortingRepository抽象类,它添加了额外的方法来简化对实体的分页访问:

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

  Iterable<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);
}

获取第二页的20条数据,可以执行以下操作:

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

除了查询方法之外,还提供了count和delete查询的查询派生。下面的列表显示了一个派生count查询的接口定义:

interface UserRepository extends CrudRepository<User, Long> {

  long countByLastname(String lastname);
}

下面的列表显示了一个派生delete查询的接口定义:

interface UserRepository extends CrudRepository<User, Long> {

  long deleteByLastname(String lastname);

  List<User> removeByLastname(String lastname);
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容