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


      之前我们学习的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);
    }
    源码地址:https://github.com/caofanqi/study-spring-data-jpa
  • 相关阅读:
    python之turtle画蚊香
    day08:多表查询
    day07:内置函数
    day06:基础查询
    day05:Navicat 图形化客户端的基本使用
    day04:MySQL数据库表的基本命令
    day03:MySQL数据库的使用
    day02:MySQL数据库的安装
    day01:数据库和SQL概述
    51单片机学习笔记(清翔版)(13)——LED点阵、74HC595
  • 原文地址:https://www.cnblogs.com/caofanqi/p/11845994.html
Copyright © 2020-2023  润新知