美文网首页Spring Data Jpa
2020-03-20 Spring Data JPA 系列教程-

2020-03-20 Spring Data JPA 系列教程-

作者: 飞天宵夜 | 来源:发表于2020-03-21 17:02 被阅读0次

    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);
    }
    

    相关文章

      网友评论

        本文标题:2020-03-20 Spring Data JPA 系列教程-

        本文链接:https://www.haomeiwen.com/subject/oxosyhtx.html