zoukankan      html  css  js  c++  java
  • MongoRepository interface

    MongoRepository的继承层次

    (parent:  spring boot 2.3.2)

    Repository
             \___ CrudRepository - save(),saveAll(),findById(),existsById(),findAll(),findAllById(),count(),deleteById(),delete(),deleteAll(),deleteAll(无参数)
                               \____ PagingAndSortingRepository - findAll(Sort), findAll(Pageable)
                                                             \______                  
                                                                            ___ MongoRepository - *saveAll(),*findAll(),*findAll(Sort),insert(),insert(),*findAll()
                  _____________________________/
                 /
    QueryByExampleExecutor - findOne(), findAll(), .., count(),exists()

    1 @Indexed
    2 public interface Repository<T, ID> {
    3 
    4 }
     1 @NoRepositoryBean
     2 public interface CrudRepository<T, ID> extends Repository<T, ID> {
     3 
     4     /**
     5      * Saves a given entity. Use the returned instance for further operations as the save operation might have changed the
     6      * entity instance completely.
     7      *
     8      * @param entity must not be {@literal null}.
     9      * @return the saved entity; will never be {@literal null}.
    10      * @throws IllegalArgumentException in case the given {@literal entity} is {@literal null}.
    11      */
    12     <S extends T> S save(S entity);
    13 
    14     /**
    15      * Saves all given entities.
    16      *
    17      * @param entities must not be {@literal null} nor must it contain {@literal null}.
    18      * @return the saved entities; will never be {@literal null}. The returned {@literal Iterable} will have the same size
    19      *         as the {@literal Iterable} passed as an argument.
    20      * @throws IllegalArgumentException in case the given {@link Iterable entities} or one of its entities is
    21      *           {@literal null}.
    22      */
    23     <S extends T> Iterable<S> saveAll(Iterable<S> entities);
    24 
    25     /**
    26      * Retrieves an entity by its id.
    27      *
    28      * @param id must not be {@literal null}.
    29      * @return the entity with the given id or {@literal Optional#empty()} if none found.
    30      * @throws IllegalArgumentException if {@literal id} is {@literal null}.
    31      */
    32     Optional<T> findById(ID id);
    33 
    34     /**
    35      * Returns whether an entity with the given id exists.
    36      *
    37      * @param id must not be {@literal null}.
    38      * @return {@literal true} if an entity with the given id exists, {@literal false} otherwise.
    39      * @throws IllegalArgumentException if {@literal id} is {@literal null}.
    40      */
    41     boolean existsById(ID id);
    42 
    43     /**
    44      * Returns all instances of the type.
    45      *
    46      * @return all entities
    47      */
    48     Iterable<T> findAll();
    49 
    50     /**
    51      * Returns all instances of the type {@code T} with the given IDs.
    52      * <p>
    53      * If some or all ids are not found, no entities are returned for these IDs.
    54      * <p>
    55      * Note that the order of elements in the result is not guaranteed.
    56      *
    57      * @param ids must not be {@literal null} nor contain any {@literal null} values.
    58      * @return guaranteed to be not {@literal null}. The size can be equal or less than the number of given
    59      *         {@literal ids}.
    60      * @throws IllegalArgumentException in case the given {@link Iterable ids} or one of its items is {@literal null}.
    61      */
    62     Iterable<T> findAllById(Iterable<ID> ids);
    63 
    64     /**
    65      * Returns the number of entities available.
    66      *
    67      * @return the number of entities.
    68      */
    69     long count();
    70 
    71     /**
    72      * Deletes the entity with the given id.
    73      *
    74      * @param id must not be {@literal null}.
    75      * @throws IllegalArgumentException in case the given {@literal id} is {@literal null}
    76      */
    77     void deleteById(ID id);
    78 
    79     /**
    80      * Deletes a given entity.
    81      *
    82      * @param entity must not be {@literal null}.
    83      * @throws IllegalArgumentException in case the given entity is {@literal null}.
    84      */
    85     void delete(T entity);
    86 
    87     /**
    88      * Deletes the given entities.
    89      *
    90      * @param entities must not be {@literal null}. Must not contain {@literal null} elements.
    91      * @throws IllegalArgumentException in case the given {@literal entities} or one of its entities is {@literal null}.
    92      */
    93     void deleteAll(Iterable<? extends T> entities);
    94 
    95     /**
    96      * Deletes all entities managed by the repository.
    97      */
    98     void deleteAll();
    99 }
     1 @NoRepositoryBean
     2 public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {
     3 
     4     /**
     5      * Returns all entities sorted by the given options.
     6      *
     7      * @param sort
     8      * @return all entities sorted by the given options
     9      */
    10     Iterable<T> findAll(Sort sort);
    11 
    12     /**
    13      * Returns a {@link Page} of entities meeting the paging restriction provided in the {@code Pageable} object.
    14      *
    15      * @param pageable
    16      * @return a page of entities
    17      */
    18     Page<T> findAll(Pageable pageable);
    19 }
     1 public interface QueryByExampleExecutor<T> {
     2 
     3     /**
     4      * Returns a single entity matching the given {@link Example} or {@literal null} if none was found.
     5      *
     6      * @param example must not be {@literal null}.
     7      * @return a single entity matching the given {@link Example} or {@link Optional#empty()} if none was found.
     8      * @throws org.springframework.dao.IncorrectResultSizeDataAccessException if the Example yields more than one result.
     9      */
    10     <S extends T> Optional<S> findOne(Example<S> example);
    11 
    12     /**
    13      * Returns all entities matching the given {@link Example}. In case no match could be found an empty {@link Iterable}
    14      * is returned.
    15      *
    16      * @param example must not be {@literal null}.
    17      * @return all entities matching the given {@link Example}.
    18      */
    19     <S extends T> Iterable<S> findAll(Example<S> example);
    20 
    21     /**
    22      * Returns all entities matching the given {@link Example} applying the given {@link Sort}. In case no match could be
    23      * found an empty {@link Iterable} is returned.
    24      *
    25      * @param example must not be {@literal null}.
    26      * @param sort the {@link Sort} specification to sort the results by, must not be {@literal null}.
    27      * @return all entities matching the given {@link Example}.
    28      * @since 1.10
    29      */
    30     <S extends T> Iterable<S> findAll(Example<S> example, Sort sort);
    31 
    32     /**
    33      * Returns a {@link Page} of entities matching the given {@link Example}. In case no match could be found, an empty
    34      * {@link Page} is returned.
    35      *
    36      * @param example must not be {@literal null}.
    37      * @param pageable can be {@literal null}.
    38      * @return a {@link Page} of entities matching the given {@link Example}.
    39      */
    40     <S extends T> Page<S> findAll(Example<S> example, Pageable pageable);
    41 
    42     /**
    43      * Returns the number of instances matching the given {@link Example}.
    44      *
    45      * @param example the {@link Example} to count instances for. Must not be {@literal null}.
    46      * @return the number of instances matching the {@link Example}.
    47      */
    48     <S extends T> long count(Example<S> example);
    49 
    50     /**
    51      * Checks whether the data store contains elements that match the given {@link Example}.
    52      *
    53      * @param example the {@link Example} to use for the existence check. Must not be {@literal null}.
    54      * @return {@literal true} if the data store contains elements that match the given {@link Example}.
    55      */
    56     <S extends T> boolean exists(Example<S> example);
    57 }
     1 @NoRepositoryBean
     2 public interface MongoRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
     3 
     4     /*
     5      * (non-Javadoc)
     6      * @see org.springframework.data.repository.CrudRepository#saveAll(java.lang.Iterable)
     7      */
     8     @Override
     9     <S extends T> List<S> saveAll(Iterable<S> entities);
    10 
    11     /*
    12      * (non-Javadoc)
    13      * @see org.springframework.data.repository.CrudRepository#findAll()
    14      */
    15     @Override
    16     List<T> findAll();
    17 
    18     /*
    19      * (non-Javadoc)
    20      * @see org.springframework.data.repository.PagingAndSortingRepository#findAll(org.springframework.data.domain.Sort)
    21      */
    22     @Override
    23     List<T> findAll(Sort sort);
    24 
    25     /**
    26      * Inserts the given entity. Assumes the instance to be new to be able to apply insertion optimizations. Use the
    27      * returned instance for further operations as the save operation might have changed the entity instance completely.
    28      * Prefer using {@link #save(Object)} instead to avoid the usage of store-specific API.
    29      *
    30      * @param entity must not be {@literal null}.
    31      * @return the saved entity
    32      * @since 1.7
    33      */
    34     <S extends T> S insert(S entity);
    35 
    36     /**
    37      * Inserts the given entities. Assumes the given entities to have not been persisted yet and thus will optimize the
    38      * insert over a call to {@link #saveAll(Iterable)}. Prefer using {@link #saveAll(Iterable)} to avoid the usage of store
    39      * specific API.
    40      *
    41      * @param entities must not be {@literal null}.
    42      * @return the saved entities
    43      * @since 1.7
    44      */
    45     <S extends T> List<S> insert(Iterable<S> entities);
    46 
    47     /*
    48      * (non-Javadoc)
    49      * @see org.springframework.data.repository.query.QueryByExampleExecutor#findAll(org.springframework.data.domain.Example)
    50      */
    51     @Override
    52     <S extends T> List<S> findAll(Example<S> example);
    53 
    54     /*
    55      * (non-Javadoc)
    56      * @see org.springframework.data.repository.query.QueryByExampleExecutor#findAll(org.springframework.data.domain.Example, org.springframework.data.domain.Sort)
    57      */
    58     @Override
    59     <S extends T> List<S> findAll(Example<S> example, Sort sort);
    60 }
  • 相关阅读:
    Leetcode 92. Reverse Linked List II
    Leetcode 206. Reverse Linked List
    Leetcode 763. Partition Labels
    Leetcode 746. Min Cost Climbing Stairs
    Leetcode 759. Employee Free Time
    Leetcode 763. Partition Labels
    搭建数据仓库第09篇:物理建模
    Python进阶篇:Socket多线程
    Python进阶篇:文件系统的操作
    搭建数据仓库第08篇:逻辑建模–5–维度建模核心之一致性维度2
  • 原文地址:https://www.cnblogs.com/bear129/p/13606803.html
Copyright © 2011-2022 走看看