• Repository接口


     Repository 接口是 Spring Data 的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法 

        public interface Repository<T, ID extends Serializable> { } 
    Spring Data可以让我们只定义接口,只要遵循 Spring Data的规范,就无需写实现类。  
    与继承 Repository 等价的一种方式,就是在持久层接口上使用 @RepositoryDefinition 注解,并为其指定 domainClass 和 idClass 属性。如下两种方式是完全等价的

    Respository子接口
    基础的 Repository 提供了最基本的数据访问功能,其几个子接口则扩展了一些功能。它们的继承关系如下: 
    1.Repository: 仅仅是一个标识,表明任何继承它的均为仓库接口类
    2.CrudRepository: 继承 Repository,实现了一组 CRUD 相关的方法 
    3.PagingAndSortingRepository: 继承 CrudRepository,实现了一组分页排序相关的方法 
    4.JpaRepository: 继承 PagingAndSortingRepository,实现一组 JPA 规范相关的方法 
    自定义的 XxxxRepository 需要继承 JpaRepository,这样的 XxxxRepository 接口就具备了通用的数据访问控制层的能力。
    JpaSpecificationExecutor: 不属于Repository体系,实现一组 JPA Criteria 查询相关的方法 


    /**Repository---仓库
     * 
     * 1.Repository是一个空接口,即是一个标记接口
     * 2.若我们定义的接口继承了Repository,则该接口会被IOC容器识别为一个Repository Bean
     * 纳入到IOC容器中,进而可以在该接口中定义满足一定规范的方法
     * 
     * 3.实际上,也可以通过@RepositoryDefinition注解来代替Repository接口
     * */
     
    /**
     * .在Repository子接口中声明方法
     * 1.不是随便声明的,而需要符合一定的规范
     * 2.查询方法以find|read|get开头
     * 3.涉及条件查询时,条件的属性用条件关键字连接,
     * 4.要注意的是:条件属性以首字母大写
     * 5.支持属性的级联查询,若当前类有符合条件的属性,则优先使用,而不使用级联属性
     *   若需要使用级联属性,则属性之间使用_进行连接
     * */
    /*@RepositoryDefinition( domainClass = Person.class,idClass=Integer.class)*/
    public interface PersonRepository extends Repository<Person,Integer>{
     
    //根据lastName来获取对应的Person
    Person getByLastName(String lastName);

     
  • 相关阅读:
    SpringBoot+AOP+自定义注解
    在win10上安装Linux系统安装
    spring、springMvc、springBoot和springCloud的联系与区别
    spring与springMVC的区别
    spring boot与spring mvc的区别是什么?
    返回的响应代码
    Java为什么要实现Serializable接口
    @Data注解和如何使用,lombok
    使用generatorConfig自动生成实体类与dao的接口以及mappers映射文件
    MyBatis 配置
  • 原文地址:https://www.cnblogs.com/MAPO/p/8516830.html
Copyright © 2020-2023  润新知