首页 > 编程语言 > 详细

学习Spring-Data-Jpa(七)---JpaRepository

时间:2019-11-13 00:28:42      阅读:92      评论:0      收藏:0      [点我收藏+]

  之前我们学习的Repository都是Spring-Data为了兼容NoSQL而进行的一些抽象封装,从JpaRepository开始是对关系型数据库进行抽象封装。JpaRepository位于spring-data-jpa项目下的repository包中,
继承了PagingAndSortingRepository和QueryByExampleExecutor接口,因此也就拥它们的全部方法。并且将默认实现的查询结果变成了List。并且新增了刷新更改到数据库、保存并刷新、批量删除等方法。使用方
法同之前的Repository一样我们直接继承它就好了,JpaRepository也是我们最常继承的接口。

@NoRepositoryBean //不要生成该类的代理类
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {

    /*
     * 重写父接口CrudRepository的方法,将查询结果由Iterable变成List。
     */
    @Override
    List<T> findAll();

    /*
     * 重写父接口PagingAndSortingRepository的方法,将查询结果由Iterable变成List。
     */
    @Override
    List<T> findAll(Sort sort);

    /*
     *    重写父接口CrudRepository的方法,将查询结果由Iterable变成List。
     */
    @Override
    List<T> findAllById(Iterable<ID> ids);

    /*
     * 重写父接口CrudRepository的方法,将查询结果由Iterable变成List。
     */
    @Override
    <S extends T> List<S> saveAll(Iterable<S> entities);

    /**
     * 新增方法:刷新挂起的更改到数据库。
     */
    void flush();

    /**
     * 新增方法:保存实体并立即刷新更改。
     */
    <S extends T> S saveAndFlush(S entity);

    /**
     * 新增方法:批量删除给定实体。
     */
    void deleteInBatch(Iterable<T> entities);

    /**
     * 新增方法:批量删除所有。
     */
    void deleteAllInBatch();

    /**
     * 返回对具有给定标识符的实体的引用。根据JPA提供商的实现方式,这很可能总是返回一个实例,
     * 并在第一次访问时抛出javax.persistence.EntityNotFoundException。其中一些会立即拒绝无效的标识符。
     */
    T getOne(ID id);

    /*
     * 重写父接口QueryByExampleExecutor的方法,将查询结果由Iterable变成List。
     */
    @Override
    <S extends T> List<S> findAll(Example<S> example);

    /*
     * 重写父接口QueryByExampleExecutor的方法,将查询结果由Iterable变成List。
     */
    @Override
    <S extends T> List<S> findAll(Example<S> example, Sort sort);
}

 

学习Spring-Data-Jpa(七)---JpaRepository

原文:https://www.cnblogs.com/caofanqi/p/11845994.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!