• 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 }
  • 相关阅读:
    HDU 5444 Elven Postman (2015 ACM/ICPC Asia Regional Changchun Online)
    POJ 1577 Falling Leaves 二叉搜索树
    HDU 3791 二叉搜索树
    Problem: Godfather 树的重心
    Problem: [Poi0202]Travelling Salesman 最近公共祖先
    Problem: 最优连通子集
    Problem: 扫雪系列II
    Problem: 扫雪系列I
    Problem: [Ural1039]没有上司的晚会
    Problem: 八中教室的灯
  • 原文地址:https://www.cnblogs.com/bear129/p/13606803.html
Copyright © 2020-2023  润新知